From ee9e970437f5ea52d90e6a8e730df4415229cb31 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Tue, 23 Dec 2008 15:21:54 -0500 Subject: [PATCH] --- yaml --- r: 124741 b: refs/heads/master c: 15860ab1d7700249ebe3b0b8ca86ce43dfd0d66f h: refs/heads/master i: 124739: 594624fb2d27b10e06c7edff9fb6f7df0c048fc4 v: v3 --- [refs] | 2 +- trunk/fs/nfs/dir.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 8c45c8477dd8..67d6da2bebf6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5584c30630f8a4aac557093b1603e166fe7385be +refs/heads/master: 15860ab1d7700249ebe3b0b8ca86ce43dfd0d66f diff --git a/trunk/fs/nfs/dir.c b/trunk/fs/nfs/dir.c index 121b533f1f28..ff167aa62434 100644 --- a/trunk/fs/nfs/dir.c +++ b/trunk/fs/nfs/dir.c @@ -799,6 +799,9 @@ static int nfs_lookup_revalidate(struct dentry * dentry, struct nameidata *nd) goto out_bad; } + if (nfs_have_delegation(inode, FMODE_READ)) + goto out_set_verifier; + /* Force a full look up iff the parent directory has changed */ if (!nfs_is_exclusive_create(dir, nd) && nfs_check_verifier(dir, dentry)) { if (nfs_lookup_verify_inode(inode, nd)) @@ -817,6 +820,7 @@ static int nfs_lookup_revalidate(struct dentry * dentry, struct nameidata *nd) if ((error = nfs_refresh_inode(inode, &fattr)) != 0) goto out_bad; +out_set_verifier: nfs_set_verifier(dentry, nfs_save_change_attribute(dir)); out_valid: dput(parent); @@ -1084,8 +1088,6 @@ static int nfs_open_revalidate(struct dentry *dentry, struct nameidata *nd) no_open_dput: dput(parent); no_open: - if (inode != NULL && nfs_have_delegation(inode, FMODE_READ)) - return 1; return nfs_lookup_revalidate(dentry, nd); } #endif /* CONFIG_NFSV4 */