On 11/01/2012 08:54 AM, Eric Blake wrote:
On 11/01/2012 08:28 AM, Michal Privoznik wrote:
> Currently, when we are doing (managed) save, we insert the
> iohelper between the qemu and OS. The pipe is created, the
> writing end is passed to qemu and the reading end to the
> iohelper. It reads data and write them into given file. However,
> with write() being asynchronous data may still be in OS
> caches and hence in some (corner) cases, all migration data
> may have been read and written (not physically though). So
> qemu will report success, as well as iohelper. However, with
> some non local filesystems, where ENOSPACE is polled every X
> time units, we may get into situation where all operations
> succeeded but data hasn't reached the disk. And in fact will
> never do. Therefore we ought sync caches to make sure data
> has reached the block device on remote host.
> ---
> src/util/iohelper.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
ACK.
Dan's comment about s/fsync/fdatasync/ in the subject line still apply,
if you haven't already pushed.
--
Eric Blake eblake(a)redhat.com +1-919-301-3266
Libvirt virtualization library
http://libvirt.org