summaryrefslogtreecommitdiff
path: root/lib/mpi
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.com>2017-08-25 10:34:41 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-12-05 13:20:47 +0300
commit9ea40d143494705b074688a4330b7085f06d3942 (patch)
tree8541e2c3a9f5aa772b8e68533bf1d07b63e23970 /lib/mpi
parent72427ea588e3eaf0170f87c0ad4b8a568979771d (diff)
downloadlinux-9ea40d143494705b074688a4330b7085f06d3942.tar.xz
NFS: revalidate "." etc correctly on "open".
commit b688741cb06695312f18b730653d6611e1bad28d upstream. For correct close-to-open semantics, NFS must validate the change attribute of a directory (or file) on open. Since commit ecf3d1f1aa74 ("vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op"), open() of "." or a path ending ".." is not revalidated reliably (except when that direct is a mount point). Prior to that commit, "." was revalidated using nfs_lookup_revalidate() which checks the LOOKUP_OPEN flag and forces revalidation if the flag is set. Since that commit, nfs_weak_revalidate() is used for NFSv3 (which ignores the flags) and nothing is used for NFSv4. This is fixed by using nfs_lookup_verify_inode() in nfs_weak_revalidate(). This does the revalidation exactly when needed. Also, add a definition of .d_weak_revalidate for NFSv4. The incorrect behavior is easily demonstrated by running "echo *" in some non-mountpoint NFS directory while watching network traffic. Without this patch, "echo *" sometimes doesn't produce any traffic. With the patch it always does. Fixes: ecf3d1f1aa74 ("vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op") cc: stable@vger.kernel.org (3.9+) Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'lib/mpi')
0 files changed, 0 insertions, 0 deletions