Red Hat Bugzilla – Bug 670539
Block devices don't implement correct flush error handling
Last modified: 2011-05-19 09:00:57 EDT
The handling of errors during a flush command is wrong in IDE and virtio-blk: IDE completely ignores flush errors and always returns success to the guest. Both IDE and virtio-blk don't respect werror=stop if the write error occurs during a flush.
Kevin, Please provide some notes how QE can test this issue. Thanks.
This is a corner case. It's unlikely that you ever trigger this under normal circumstances, because you'll always have writes before and after the flush that will fail as well. I think we can create an unusual setup where you could notice the difference. Let's try this: Do something like the usual I/O error tests, e.g. create some I/O and shutdown the NFS server. To maximize the amount of flushes, try using dd with conv=fsync for the I/O. Start qemu with werror=ignore,rerror=ignore in order to completely ignore the read/write errors that will occur so that even without this fix only flushes remain visible. Check dmesg for error messages in the guest. They are expected to be there without the patch, and they should disappear with the patch applied. And after this better not restart the NFS server while the VM is still running. Otherwise be prepared for the guest filesystem to be broken, werror=ignore is dangerous.
move to verified based on comment#7
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2011-0534.html