aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/dir.c
diff options
context:
space:
mode:
authorChuck Lever <cel@netapp.com>2005-10-25 11:48:36 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2005-10-27 22:12:40 -0400
commit0c70b50150cfb0b43ff500a8a394a52b4d5f1350 (patch)
tree292d31ce5378edb856076d2c610c323b76af0b09 /fs/nfs/dir.c
parentdecf491f3076190262d4c649bed877650623903a (diff)
NFS: nfs_lookup doesn't need to revalidate the parent directory's inode
nfs_lookup() used to consult a lookup cache before trying an actual wire lookup operation. The lookup cache would be invalid, of course, if the parent directory's mtime had changed, so nfs_lookup performed an inode revalidation on the parent. Since nfs_lookup() doesn't use a cache anymore, the revalidation is no longer necessary. There are cases where it will generate a lot of unnecessary GETATTR traffic. See http://bugzilla.linux-nfs.org/show_bug.cgi?id=9 Test-plan: Use lndir and "rm -rf" and watch for excess GETATTR traffic or application level errors. Signed-off-by: Chuck Lever <cel@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/dir.c')
-rw-r--r--fs/nfs/dir.c6
1 files changed, 0 insertions, 6 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index b8a73045e9a0..ce8f77dadff9 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -853,12 +853,6 @@ static struct dentry *nfs_lookup(struct inode *dir, struct dentry * dentry, stru
853 dentry->d_op = NFS_PROTO(dir)->dentry_ops; 853 dentry->d_op = NFS_PROTO(dir)->dentry_ops;
854 854
855 lock_kernel(); 855 lock_kernel();
856 /* Revalidate parent directory attribute cache */
857 error = nfs_revalidate_inode(NFS_SERVER(dir), dir);
858 if (error < 0) {
859 res = ERR_PTR(error);
860 goto out_unlock;
861 }
862 856
863 /* If we're doing an exclusive create, optimize away the lookup */ 857 /* If we're doing an exclusive create, optimize away the lookup */
864 if (nfs_is_exclusive_create(dir, nd)) 858 if (nfs_is_exclusive_create(dir, nd))