summaryrefslogtreecommitdiffstats
path: root/drivers/s390
diff options
context:
space:
mode:
authorMiklos Szeredi2012-05-21 17:30:20 +0200
committerAl Viro2012-06-01 18:12:02 +0200
commit0ef97dcfce4179a2eba046b855ee2f91d6f1b414 (patch)
treed5a29275a427dafd8fce0131b58f215c6252d3e2 /drivers/s390
parentvfs: retry last component if opening stale dentry (diff)
downloadkernel-qcow2-linux-0ef97dcfce4179a2eba046b855ee2f91d6f1b414.tar.gz
kernel-qcow2-linux-0ef97dcfce4179a2eba046b855ee2f91d6f1b414.tar.xz
kernel-qcow2-linux-0ef97dcfce4179a2eba046b855ee2f91d6f1b414.zip
nfs: don't open in ->d_revalidate
NFSv4 can't do reliable opens in d_revalidate, since it cannot know whether a mount needs to be followed or not. It does check d_mountpoint() on the dentry, which can result in a weird error if the VFS found that the mount does not in fact need to be followed, e.g.: # mount --bind /mnt/nfs /mnt/nfs-clone # echo something > /mnt/nfs/tmp/bar # echo x > /tmp/file # mount --bind /tmp/file /mnt/nfs-clone/tmp/bar # cat /mnt/nfs/tmp/bar cat: /mnt/nfs/tmp/bar: Not a directory Which should, by any sane filesystem, result in "something" being printed. So instead do the open in f_op->open() and in the unlikely case that the cached dentry turned out to be invalid, drop the dentry and return EOPENSTALE to let the VFS retry. Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> CC: Trond Myklebust <Trond.Myklebust@netapp.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'drivers/s390')
0 files changed, 0 insertions, 0 deletions