qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]