Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=e70c490810dc683fad39e57cf00e69d5f120c542
Commit:     e70c490810dc683fad39e57cf00e69d5f120c542
Parent:     e62c2bba1fb7cf068eb78d731da46e4447a9efb1
Author:     Trond Myklebust <[EMAIL PROTECTED]>
AuthorDate: Wed May 9 09:00:18 2007 -0400
Committer:  Trond Myklebust <[EMAIL PROTECTED]>
CommitDate: Wed May 9 17:57:59 2007 -0400

    NFS: Remove redundant check in nfs_check_verifier()
    
    The check for nfs_attribute_timeout(dir) in nfs_check_verifier is
    redundant: nfs_lookup_revalidate() will already call nfs_revalidate_inode()
    on the parent dir when necessary.
    
    The only case where this is not done is the case of a negative dentry. Fix
    this case by moving up the revalidation code.
    
    Signed-off-by: Trond Myklebust <[EMAIL PROTECTED]>
---
 fs/nfs/dir.c |   12 +++++-------
 1 files changed, 5 insertions(+), 7 deletions(-)

diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index fced7d1..469cf66 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -655,9 +655,7 @@ static int nfs_check_verifier(struct inode *dir, struct 
dentry *dentry)
        if (IS_ROOT(dentry))
                return 1;
        verf = (unsigned long)dentry->d_fsdata;
-       if ((NFS_I(dir)->cache_validity & NFS_INO_INVALID_ATTR) != 0
-                       || nfs_attribute_timeout(dir)
-                       || nfs_caches_unstable(dir)
+       if (nfs_caches_unstable(dir)
                        || verf != NFS_I(dir)->cache_change_attribute)
                return 0;
        return 1;
@@ -769,6 +767,10 @@ static int nfs_lookup_revalidate(struct dentry * dentry, 
struct nameidata *nd)
        nfs_inc_stats(dir, NFSIOS_DENTRYREVALIDATE);
        inode = dentry->d_inode;
 
+       /* Revalidate parent directory attribute cache */
+       if (nfs_revalidate_inode(NFS_SERVER(dir), dir) < 0)
+               goto out_zap_parent;
+
        if (!inode) {
                if (nfs_neg_need_reval(dir, dentry, nd))
                        goto out_bad;
@@ -782,10 +784,6 @@ static int nfs_lookup_revalidate(struct dentry * dentry, 
struct nameidata *nd)
                goto out_bad;
        }
 
-       /* Revalidate parent directory attribute cache */
-       if (nfs_revalidate_inode(NFS_SERVER(dir), dir) < 0)
-               goto out_zap_parent;
-
        /* Force a full look up iff the parent directory has changed */
        if (nfs_check_verifier(dir, dentry)) {
                if (nfs_lookup_verify_inode(inode, nd))
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to