I'm repeating the report I sent to the NFS maintainers on the mailing list:
On both kernels in Ubuntu 16.04 (4.4.0-130) with NFS v4.0, I'm seeing an issue where
stale data is shown if a file remains open on one machine, and the
file is overwritten via a rename() on another. Here's my test:
1. On node A, create two different files on a shared NFS mount:
"test1.txt" and "test2.txt".
2. On node B, continuously show the contents of the first file: "while
true; do cat test1.txt; done"
3. On node B, run a process that keeps "test1.txt" open. For example,
with Python, run:
f = open('/nfs-mount/test1.txt', 'r')
4. Rename test2.txt via "mv -f test2.txt test1.txt"
On node B, I see the contents of the original test1.txt indefinitely,
even after I disabled attribute caching and the lookup cache. I can
make the while loop in step 2 show the new content if I perform one of
these actions:
1. Run "ls /nfs-mount"
2. Close the open file in step 3
NOTE: This bug has been fixed in the upstream mainline kernel via https:/ /git.kernel. org/pub/ scm/linux/ kernel/ git/torvalds/ linux.git/ commit/ ?h=be189f7e7f03 de35887e5a85ddc f39b91b5d7fc1 and merged in the latest NFS client patches in https:/ /git.kernel. org/pub/ scm/linux/ kernel/ git/torvalds/ linux.git/ commit/ ?h=c7a2c49ea6c9 eebbe44ff2c08b6 63b2905ee2c13.
The full patchset is here: https:/ /marc.info/ ?l=linux- nfs&m=153816500 525563& w=2
I'm repeating the report I sent to the NFS maintainers on the mailing list:
On both kernels in Ubuntu 16.04 (4.4.0-130) with NFS v4.0, I'm seeing an issue where
stale data is shown if a file remains open on one machine, and the
file is overwritten via a rename() on another. Here's my test:
1. On node A, create two different files on a shared NFS mount: nfs-mount/ test1.txt' , 'r')
"test1.txt" and "test2.txt".
2. On node B, continuously show the contents of the first file: "while
true; do cat test1.txt; done"
3. On node B, run a process that keeps "test1.txt" open. For example,
with Python, run:
f = open('/
4. Rename test2.txt via "mv -f test2.txt test1.txt"
On node B, I see the contents of the original test1.txt indefinitely,
even after I disabled attribute caching and the lookup cache. I can
make the while loop in step 2 show the new content if I perform one of
these actions:
1. Run "ls /nfs-mount"
2. Close the open file in step 3