--On 19 March 2013 12:14:36 +0100 Paolo Bonzini <pbonz...@redhat.com> wrote:
Unfortunately no. The problem is in the loading side's kernel, on which you do not have any control. If the loading side doesn't use O_DIRECT, any attempt to invalidate the metadata in userspace or on the source is futile, because there is no way to invalidate the page cache's copy of that metadata.
If you closed the file and reopened it, then on NFS this would have this effect I believe, as it needs to check whether other clients have modified the file to give open/close coherency. However, we are rather assuming the file isn't even open at the point it is closed by the sender, which is what George is investigating. If this isn't true, we have a problem anyway with (e.g.) emulated devices which don't use O_DIRECT anyway. And I had thought (I may be wrong) using O_DIRECT does not guarantee no read caching with NFS; O_DIRECT merely guarantees the page cache is not used under Linux and isn't defined under POSIX: http://www.spinics.net/lists/linux-nfs/msg17472.html If it were just a write caching issue, we could use O_DSYNC instead of O_DIRECT, which would at least ensure the copy from userspace. -- Alex Bligh