linux-nfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bob Bell <b_linuxnfs-Y/+76LoPTq9wBoktGHYdvgC/G2K4zDHf@public.gmane.org>
To: linux-nfs@vger.kernel.org
Subject: [PATCH 3/3] nfs-utils: Add nonegde mount option
Date: Tue, 15 Jan 2008 11:31:30 -0500	[thread overview]
Message-ID: <20080115163130.GD18911@newbie.thebellsplace.net> (raw)
In-Reply-To: <20080115162658.GA18911-y89O8yXFYpDSsb2jM9SCN5/hYUUxywnI@public.gmane.org>

From: Bob Bell <bell_robert@emc.com>

Support a "nonegde" mount option to match the new NFS_MOUNT_NONEGDE 
flag.

Signed-off-by: Bob Bell <bell_robert@emc.com>
---
 utils/mount/nfs.man     |   18 ++++++++++++++++++
 utils/mount/nfs_mount.h |   31 ++++++++++++++++---------------
 utils/mount/nfsmount.c  |    9 +++++++--
 3 files changed, 41 insertions(+), 17 deletions(-)

diff --git a/utils/mount/nfs.man b/utils/mount/nfs.man
index 2c0b687..b0a885a 100644
--- a/utils/mount/nfs.man
+++ b/utils/mount/nfs.man
@@ -613,6 +613,24 @@ If this option is not specified, the NFS client uses READDIRPLUS requests
 on NFS version 3 mounts to read small directories.
 Some applications perform better if the client uses only READDIR requests
 for all directories.  
+.TP 1.5i
+.BR negde " / " nonegde
+Selects whether to cache negative dentries,
+which record the non-existence of a file.
+If neither option is specified (or if 
+.B negde
+is specified),
+each negative dentry will be kept in the kernel dcache until it is invalidated
+when a change is detected in its parent directory,
+or until sufficient memory pressure forces it out.
+.IP
+Using the
+.B nonegde
+option may be helpful if the NFS server does not provide
+sufficiently fine-grained timestamps to consistently distinguish when the
+contents of a directory have been updated.  However, by not caching negative
+dentries, the client will have to contact the server whenever there is an
+attempt to access a previously non-existent file, which may impact performance.
 .SS "Valid options for the nfs4 file system type"
 Use these options, along with the options in the first subsection above,
 for mounting the
diff --git a/utils/mount/nfs_mount.h b/utils/mount/nfs_mount.h
index 7df8fb2..2deca87 100644
--- a/utils/mount/nfs_mount.h
+++ b/utils/mount/nfs_mount.h
@@ -50,21 +50,22 @@ struct nfs_mount_data {
 
 /* bits in the flags field */
 
-#define NFS_MOUNT_SOFT		0x0001	/* 1 */
-#define NFS_MOUNT_INTR		0x0002	/* 1 */
-#define NFS_MOUNT_SECURE	0x0004	/* 1 */
-#define NFS_MOUNT_POSIX		0x0008	/* 1 */
-#define NFS_MOUNT_NOCTO		0x0010	/* 1 */
-#define NFS_MOUNT_NOAC		0x0020	/* 1 */
-#define NFS_MOUNT_TCP		0x0040	/* 2 */
-#define NFS_MOUNT_VER3		0x0080	/* 3 */
-#define NFS_MOUNT_KERBEROS	0x0100	/* 3 */
-#define NFS_MOUNT_NONLM		0x0200	/* 3 */
-#define NFS_MOUNT_BROKEN_SUID	0x0400	/* 4 */
-#define NFS_MOUNT_NOACL     0x0800  /* 4 */
-#define NFS_MOUNT_SECFLAVOUR	0x2000	/* 5 */
-#define NFS_MOUNT_NORDIRPLUS	0x4000	/* 5 */
-#define NFS_MOUNT_UNSHARED	0x8000	/* 5 */
+#define NFS_MOUNT_SOFT		0x00001	/* 1 */
+#define NFS_MOUNT_INTR		0x00002	/* 1 */
+#define NFS_MOUNT_SECURE	0x00004	/* 1 */
+#define NFS_MOUNT_POSIX		0x00008	/* 1 */
+#define NFS_MOUNT_NOCTO		0x00010	/* 1 */
+#define NFS_MOUNT_NOAC		0x00020	/* 1 */
+#define NFS_MOUNT_TCP		0x00040	/* 2 */
+#define NFS_MOUNT_VER3		0x00080	/* 3 */
+#define NFS_MOUNT_KERBEROS	0x00100	/* 3 */
+#define NFS_MOUNT_NONLM		0x00200	/* 3 */
+#define NFS_MOUNT_BROKEN_SUID	0x00400	/* 4 */
+#define NFS_MOUNT_NOACL		0x00800	/* 4 */
+#define NFS_MOUNT_SECFLAVOUR	0x02000	/* 5 */
+#define NFS_MOUNT_NORDIRPLUS	0x04000	/* 5 */
+#define NFS_MOUNT_UNSHARED	0x08000	/* 5 */
+#define NFS_MOUNT_NONEGDE	0x10000	/* 5 */
 
 /* security pseudoflavors */
 
diff --git a/utils/mount/nfsmount.c b/utils/mount/nfsmount.c
index 23dd2f6..81ab371 100644
--- a/utils/mount/nfsmount.c
+++ b/utils/mount/nfsmount.c
@@ -422,6 +422,10 @@ parse_options(char *old_opts, struct nfs_mount_data *data,
 				if (!val)
 					data->flags |= NFS_MOUNT_UNSHARED;
 #endif
+			} else if (!strcmp(opt, "negde")) {
+				data->flags &= ~NFS_MOUNT_NONEGDE;
+				if (!val)
+					data->flags |= NFS_MOUNT_NONEGDE;
 			} else {
 			bad_option:
 				if (sloppy)
@@ -595,12 +599,13 @@ nfsmount(const char *spec, const char *node, int flags,
 	printf(_("mountprog = %lu, mountvers = %lu, nfsprog = %lu, nfsvers = %lu\n"),
 	       mnt_pmap->pm_prog, mnt_pmap->pm_vers,
 	       nfs_pmap->pm_prog, nfs_pmap->pm_vers);
-	printf(_("soft = %d, intr = %d, posix = %d, nocto = %d, noac = %d"),
+	printf(_("soft = %d, intr = %d, posix = %d, nocto = %d, noac = %d, nonegde = %d"),
 	       (data.flags & NFS_MOUNT_SOFT) != 0,
 	       (data.flags & NFS_MOUNT_INTR) != 0,
 	       (data.flags & NFS_MOUNT_POSIX) != 0,
 	       (data.flags & NFS_MOUNT_NOCTO) != 0,
-	       (data.flags & NFS_MOUNT_NOAC) != 0);
+	       (data.flags & NFS_MOUNT_NOAC) != 0,
+	       (data.flags & NFS_MOUNT_NONEGDE) != 0);
 #if NFS_MOUNT_VERSION >= 2
 	printf(_(", tcp = %d"),
 	       (data.flags & NFS_MOUNT_TCP) != 0);

  parent reply	other threads:[~2008-01-15 16:31 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-15 16:27 [PATCH 0/3] Intro: Better handling coarse-grained timestamps Bob Bell
     [not found] ` <20080115162658.GA18911-y89O8yXFYpDSsb2jM9SCN5/hYUUxywnI@public.gmane.org>
2008-01-15 16:29   ` [PATCH 1/3] NFS: Check nlinks count Bob Bell
2008-01-15 16:30   ` [PATCH 2/3] NFS: Add NFS_MOUNT_NONEGDE flag to avoid caching negative dentries Bob Bell
     [not found]     ` <20080115163013.GC18911-y89O8yXFYpDSsb2jM9SCN5/hYUUxywnI@public.gmane.org>
2008-01-15 16:52       ` Trond Myklebust
     [not found]         ` <1200415972.7702.7.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-01-15 17:04           ` Chuck Lever
2008-01-15 17:14             ` Trond Myklebust
2008-01-16  1:22             ` Bob Bell
     [not found]               ` <20080116012209.GB26010-y89O8yXFYpDSsb2jM9SCN5/hYUUxywnI@public.gmane.org>
2008-01-16  2:42                 ` Trond Myklebust
     [not found]                   ` <1200451350.28088.43.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-01-16 12:49                     ` Steve Dickson
     [not found]                       ` <478DFD5A.1040501-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2008-01-16 19:43                         ` Muntz, Daniel
     [not found]                           ` <01AE8AF878612047A442668306EAEB05018178E7-Ye0EzW0T4yEQ4vjYWPuN5KYtpRd4g51m@public.gmane.org>
2008-01-16 20:43                             ` Trond Myklebust
     [not found]                               ` <1200516219.6932.22.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-01-16 20:49                                 ` Chuck Lever
2008-01-16 21:12                                   ` Risto Bell
     [not found]                                     ` <478E7345.8080003-+wT8y+m8/X5BDgjK7y7TUQ@public.gmane.org>
2008-01-16 21:56                                       ` Trond Myklebust
     [not found]                                         ` <1200520574.15282.24.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-01-16 22:09                                           ` Chuck Lever
2008-01-16 23:21                                             ` Trond Myklebust
2008-01-18 15:29                                   ` Bob Bell
     [not found]                                     ` <20080118152902.GF7128-y89O8yXFYpDSsb2jM9SCN5/hYUUxywnI@public.gmane.org>
2008-01-18 20:00                                       ` Muntz, Daniel
     [not found]                                         ` <01AE8AF878612047A442668306EAEB0501817BA4-Ye0EzW0T4yEQ4vjYWPuN5KYtpRd4g51m@public.gmane.org>
2008-01-19  1:28                                           ` Bob Bell
2008-01-18 21:12                                       ` Chuck Lever
2008-01-18 21:17                                         ` Trond Myklebust
2008-01-15 16:31   ` Bob Bell [this message]
     [not found]     ` <20080115163130.GD18911-y89O8yXFYpDSsb2jM9SCN5/hYUUxywnI@public.gmane.org>
2008-01-15 16:42       ` [PATCH 3/3] nfs-utils: Add nonegde mount option Chuck Lever
2008-01-16  1:13         ` Bob Bell
     [not found]           ` <20080116011305.GA26010-y89O8yXFYpDSsb2jM9SCN5/hYUUxywnI@public.gmane.org>
2008-01-16 20:45             ` Chuck Lever
2008-01-16  1:55   ` [PATCH 0/3] Intro: Better handling coarse-grained timestamps Bob Bell
     [not found]     ` <20080116015526.GC26010-y89O8yXFYpDSsb2jM9SCN5/hYUUxywnI@public.gmane.org>
2008-01-16  2:18       ` Trond Myklebust
     [not found]         ` <1200449912.28088.22.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-01-16 17:16           ` david m. richter
2008-01-16 19:47             ` Trond Myklebust
     [not found]               ` <1200512872.6932.8.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2008-01-16 20:09                 ` david m. richter

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080115163130.GD18911@newbie.thebellsplace.net \
    --to=b_linuxnfs-y/+76loptq9wboktghydvgc/g2k4zdhf@public.gmane.org \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).