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>
This commit is contained in:
Родитель
decf491f30
Коммит
0c70b50150
|
@ -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))
|
||||
|
|
Загрузка…
Ссылка в новой задаче