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

    NFS: Fix a jiffie wraparound issue
    
    dentry verifiers are always set to the parent directory's
    cache_change_attribute. There is no reason to be testing for anything other
    than equality when we're trying to find out if the dentry has been checked
    since the last time the directory was modified.
    
    Signed-off-by: Trond Myklebust <[EMAIL PROTECTED]>
---
 fs/nfs/dir.c |   12 ++++++++----
 1 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 625d8e5..fced7d1 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -650,12 +650,17 @@ int nfs_fsync_dir(struct file *filp, struct dentry 
*dentry, int datasync)
  */
 static int nfs_check_verifier(struct inode *dir, struct dentry *dentry)
 {
+       unsigned long verf;
+
        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_attribute_timeout(dir)
+                       || nfs_caches_unstable(dir)
+                       || verf != NFS_I(dir)->cache_change_attribute)
                return 0;
-       return nfs_verify_change_attribute(dir, (unsigned 
long)dentry->d_fsdata);
+       return 1;
 }
 
 static inline void nfs_set_verifier(struct dentry * dentry, unsigned long verf)
@@ -665,8 +670,7 @@ static inline void nfs_set_verifier(struct dentry * dentry, 
unsigned long verf)
 
 static void nfs_refresh_verifier(struct dentry * dentry, unsigned long verf)
 {
-       if (time_after(verf, (unsigned long)dentry->d_fsdata))
-               nfs_set_verifier(dentry, verf);
+       nfs_set_verifier(dentry, verf);
 }
 
 /*
-
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