summaryrefslogtreecommitdiffstats
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
parentdecf491f3076190262d4c649bed877650623903a (diff)
downloadkernel-crypto-0c70b50150cfb0b43ff500a8a394a52b4d5f1350.tar.gz
kernel-crypto-0c70b50150cfb0b43ff500a8a394a52b4d5f1350.tar.xz
kernel-crypto-0c70b50150cfb0b43ff500a8a394a52b4d5f1350.zip
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>
-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 b8a73045e9a..ce8f77dadff 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
dentry->d_op = NFS_PROTO(dir)->dentry_ops;
lock_kernel();
- /* Revalidate parent directory attribute cache */
- error = nfs_revalidate_inode(NFS_SERVER(dir), dir);
- if (error < 0) {
- res = ERR_PTR(error);
- goto out_unlock;
- }
/* If we're doing an exclusive create, optimize away the lookup */
if (nfs_is_exclusive_create(dir, nd))