diff options
| author | Trond Myklebust <[email protected]> | 2015-02-22 21:35:36 +0000 |
|---|---|---|
| committer | Trond Myklebust <[email protected]> | 2015-03-02 04:23:06 +0000 |
| commit | 6c441c254eea2354d686be7f5544bcd79fb6a61f (patch) | |
| tree | b5b45b9dc69afbb1bbd91ec2eeaee0a0553ac540 /net/switchdev/switchdev.c | |
| parent | NFSv4: Set a barrier in the update_changeattr() helper (diff) | |
| download | kernel-6c441c254eea2354d686be7f5544bcd79fb6a61f.tar.gz kernel-6c441c254eea2354d686be7f5544bcd79fb6a61f.zip | |
NFS: Don't invalidate a submounted dentry in nfs_prime_dcache()
If we're traversing a directory which contains a submounted filesystem,
or one that has a referral, the NFS server that is processing the READDIR
request will often return information for the underlying (mounted-on)
directory. It may, or may not, also return filehandle information.
If this happens, and the lookup in nfs_prime_dcache() returns the
dentry for the submounted directory, the filehandle comparison will
fail, and we call d_invalidate(). Post-commit 8ed936b5671bf
("vfs: Lazily remove mounts on unlinked files and directories."), this
means the entire subtree is unmounted.
The following minimal patch addresses this problem by punting on
the invalidation if there is a submount.
Kudos to Neil Brown <[email protected]> for having tracked down this
issue (see link).
Reported-by: Nix <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Cc: [email protected] # 3.18+
Signed-off-by: Trond Myklebust <[email protected]>
Diffstat (limited to 'net/switchdev/switchdev.c')
0 files changed, 0 insertions, 0 deletions
