summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2007-10-02 02:10:12 +0200
committerTrond Myklebust <Trond.Myklebust@netapp.com>2007-10-09 23:20:03 +0200
commit216d5d06883edfaf992ada0d72a2a22fdfdbd296 (patch)
tree4b3ff79736cb09a2bb565383232243971a9a8e2f
parentNFSv4: Don't revalidate the directory in nfs_atomic_lookup() (diff)
downloadlinux-216d5d06883edfaf992ada0d72a2a22fdfdbd296.tar.xz
linux-216d5d06883edfaf992ada0d72a2a22fdfdbd296.zip
NFSv4: Use NFSv2/v3 rules for negative dentries in nfs_open_revalidate
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--fs/nfs/dir.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 9ca38ab0e0a7..41b063c98822 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -1037,8 +1037,12 @@ static int nfs_open_revalidate(struct dentry *dentry, struct nameidata *nd)
/* We can't create new files in nfs_open_revalidate(), so we
* optimize away revalidation of negative dentries.
*/
- if (inode == NULL)
+ if (inode == NULL) {
+ if (!nfs_neg_need_reval(dir, dentry, nd))
+ ret = 1;
goto out;
+ }
+
/* NFS only supports OPEN on regular files */
if (!S_ISREG(inode->i_mode))
goto no_open;