[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [Bug 1437367] [NEW] Qemu guest fails to write files with ra
From: |
hiroaki |
Subject: |
[Qemu-devel] [Bug 1437367] [NEW] Qemu guest fails to write files with raw disk (like \\.\PhysicalDrive1) on Windows host. |
Date: |
Fri, 27 Mar 2015 14:46:17 -0000 |
Public bug reported:
Qemu guest fails to write files with specifing raw disk like \\.\PhysicalDrive1
full command line is below.
qemu-sysytem-i386.exe -kernel bzImage -drive file=rootfs.ext2,index=0,if=scsi
-append root=/dev/sda -drive file=\\.\PhysicalDrive1,index=1,if=scsi
I found the reason is below aio_worker returns -EIO when flush
operation.
https://github.com/qemu/qemu/blob/master/block/raw-win32.c#L95
static int aio_worker(void *arg)
...
case QEMU_AIO_FLUSH:
if (!FlushFileBuffers(aiocb->hfile)) {
return -EIO;
}
FlushFileBuffers always fails with GetLastError() == ERROR_INVALID_FUNCTION
I think this function doesn't support raw device.
For flushing, you might have to issue scsi/ata command or use another way.
Trying to just ignoring this error, writing function seems to be fine for me.
Thanks
hiroaki
** Affects: qemu
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1437367
Title:
Qemu guest fails to write files with raw disk (like
\\.\PhysicalDrive1) on Windows host.
Status in QEMU:
New
Bug description:
Qemu guest fails to write files with specifing raw disk like
\\.\PhysicalDrive1
full command line is below.
qemu-sysytem-i386.exe -kernel bzImage -drive file=rootfs.ext2,index=0,if=scsi
-append root=/dev/sda -drive file=\\.\PhysicalDrive1,index=1,if=scsi
I found the reason is below aio_worker returns -EIO when flush
operation.
https://github.com/qemu/qemu/blob/master/block/raw-win32.c#L95
static int aio_worker(void *arg)
...
case QEMU_AIO_FLUSH:
if (!FlushFileBuffers(aiocb->hfile)) {
return -EIO;
}
FlushFileBuffers always fails with GetLastError() == ERROR_INVALID_FUNCTION
I think this function doesn't support raw device.
For flushing, you might have to issue scsi/ata command or use another way.
Trying to just ignoring this error, writing function seems to be fine for me.
Thanks
hiroaki
To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1437367/+subscriptions
- [Qemu-devel] [PATCH v6 0/7] Block Throttle Group Support, Alberto Garcia, 2015/03/30
- [Qemu-devel] [PATCH 7/7] throttle: Update throttle infrastructure copyright, Alberto Garcia, 2015/03/30
- [Qemu-devel] [PATCH 3/7] throttle: Add throttle group infrastructure tests, Alberto Garcia, 2015/03/30
- [Qemu-devel] [PATCH 6/7] throttle: add the name of the ThrottleGroup to BlockDeviceInfo, Alberto Garcia, 2015/03/30
- [Qemu-devel] [PATCH 5/7] throttle: acquire the ThrottleGroup lock in bdrv_swap(), Alberto Garcia, 2015/03/30
- [Qemu-devel] [PATCH 1/7] throttle: Extract timers from ThrottleState into a separate structure, Alberto Garcia, 2015/03/30
- [Qemu-devel] [PATCH 2/7] throttle: Add throttle group infrastructure, Alberto Garcia, 2015/03/30
- [Qemu-devel] [PATCH 4/7] throttle: Add throttle group support, Alberto Garcia, 2015/03/30