[libvirt] [PATCH v3] iohelper: fsync() at the end

Michal Privoznik mprivozn at redhat.com
Thu Nov 1 15:54:37 UTC 2012


On 01.11.2012 15:57, Eric Blake wrote:
> 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.
> 

Yeah, changed and pushed. Thanks!

Michal




More information about the libvir-list mailing list