Am 18.12.2013 um 11:38 schrieb Paolo Bonzini <pbonz...@redhat.com>: > Il 18/12/2013 11:24, Orit Wasserman ha scritto: >>>> >>>> For live migration we need the sync option (async ignores O_SYNC and >>>> O_DIRECT sadly), >>>> will it be supported? or will it be the default? >>> >>> Since this is bypassing the client kernel FS I/O layer question around >>> support of things like O_SYNC/O_DIRECT are not applicable. >>> >> >> so no live migration support? > > No, live migration just works. > > O_SYNC is not used anymore in QEMU, we just issue a flush after every write. > > And all protocol drivers except files/block devices _always_ bypass the > kernel page cache (libiscsi, NBD, ceph, and now libnfs) so they are > always behaving as if they had O_DIRECT. For these protocols, > cache=writeback and cache=none are entirely the same.
Not completely I think, but please correct me if I am wrong. If cache=writeback is set we issue just a write. In libnfs or libiscsi case that guarantees that the request has been successfully executed on the target / server. This is enough to be consistent in case of migration because consecutive reads will be answered correctly. But the target / server is still free to just keep this data in memory so we should only set this if we know that the target / server e.g. has a battery backup or we know that the filesystem uses e.g. barriers and issues a flush at important points. If cache=none is set we issue a flush after every single write. In the libiscsi case we issue a synchronize cache which should also guarantee that data is flushed to disk. I hope that the NFS_COMMIT does the same in the libnfs case?! BR, Peter