From 1d976af17be6d2a26e26acc8bd501ce1fcabe3a2 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Tue, 15 Jul 2008 17:58:13 -0400 Subject: [PATCH] --- yaml --- r: 115376 b: refs/heads/master c: 4eec952e42314b53e48fef1f54dd89cbf9789734 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/nfs/dir.c | 4 ++++ trunk/include/linux/nfs_mount.h | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 2ba1e24b6e2f..6e2bb9b02951 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1daef0a868370c5a96d031b9202e3354bea060e6 +refs/heads/master: 4eec952e42314b53e48fef1f54dd89cbf9789734 diff --git a/trunk/fs/nfs/dir.c b/trunk/fs/nfs/dir.c index 74f92b717f78..49d565412827 100644 --- a/trunk/fs/nfs/dir.c +++ b/trunk/fs/nfs/dir.c @@ -667,6 +667,8 @@ static int nfs_check_verifier(struct inode *dir, struct dentry *dentry) { if (IS_ROOT(dentry)) return 1; + if (NFS_SERVER(dir)->flags & NFS_MOUNT_LOOKUP_CACHE_NONE) + return 0; if (!nfs_verify_change_attribute(dir, dentry->d_time)) return 0; /* Revalidate nfsi->cache_change_attribute before we declare a match */ @@ -750,6 +752,8 @@ int nfs_neg_need_reval(struct inode *dir, struct dentry *dentry, /* Don't revalidate a negative dentry if we're creating a new file */ if (nd != NULL && nfs_lookup_check_intent(nd, LOOKUP_CREATE) != 0) return 0; + if (NFS_SERVER(dir)->flags & NFS_MOUNT_LOOKUP_CACHE_NONEG) + return 1; return !nfs_check_verifier(dir, dentry); } diff --git a/trunk/include/linux/nfs_mount.h b/trunk/include/linux/nfs_mount.h index df7c6b7a7ebb..6549a06ac16e 100644 --- a/trunk/include/linux/nfs_mount.h +++ b/trunk/include/linux/nfs_mount.h @@ -65,4 +65,8 @@ struct nfs_mount_data { #define NFS_MOUNT_UNSHARED 0x8000 /* 5 */ #define NFS_MOUNT_FLAGMASK 0xFFFF +/* The following are for internal use only */ +#define NFS_MOUNT_LOOKUP_CACHE_NONEG 0x10000 +#define NFS_MOUNT_LOOKUP_CACHE_NONE 0x20000 + #endif