The documentation of FlushFileBuffers() only mentions that consoles cannot be flushed. It doesn't specifically mention physical drives, but it does explicitly mention that whole volumes can be flushed this way:
https://msdn.microsoft.com/en- us/library/windows/desktop/aa364439%28v=vs.85%29.aspx Of course, I'm not really a Windows expert, so my reading of this may be wrong. If anyone knows how physical drives are supposed to be flushed other than with FlushFileBuffers(), we can certainly implement that in qemu. In any case, just disabling the flush is not advisable as it may harm data integrity in case of crashes/power failure. If you really want to disable it, the cache=unsafe option should avoid the calls. -- 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