Re: [patch 21/26] mount options: partially fix nfs

From: Chuck Lever
Date: Thu Jan 24 2008 - 15:50:46 EST


Hi Miklos-

Miklos Szeredi wrote:
From: Miklos Szeredi <mszeredi@xxxxxxx>

Add posix, bsize=, namelen= options to /proc/mounts for nfs
filesystems.

Document several other options that are still missing.

NFS lists only some options in /proc/mounts on purpose: only the essential options are mentioned there to keep clutter down. The three you've added here are for all intents and purposes deprecated, which is why they are not supported.

NFS lists a more complete set of mount options for a mount point in /proc/self/mountstats. See nfs_show_stats().

Since your cover letter does not explain why you are changing this code, can you refer me to a description of why you are doing this?

More below.

Signed-off-by: Miklos Szeredi <mszeredi@xxxxxxx>
---

Index: linux/fs/nfs/super.c
===================================================================
--- linux.orig/fs/nfs/super.c 2008-01-19 11:56:34.000000000 +0100
+++ linux/fs/nfs/super.c 2008-01-21 20:41:30.000000000 +0100
@@ -449,6 +449,7 @@ static void nfs_show_mount_options(struc
} nfs_info[] = {
{ NFS_MOUNT_SOFT, ",soft", ",hard" },
{ NFS_MOUNT_INTR, ",intr", ",nointr" },
+ { NFS_MOUNT_POSIX, ",posix", "" },
{ NFS_MOUNT_NOCTO, ",nocto", "" },
{ NFS_MOUNT_NOAC, ",noac", "" },
{ NFS_MOUNT_NONLM, ",nolock", "" },
@@ -459,10 +460,17 @@ static void nfs_show_mount_options(struc
};
const struct proc_nfs_info *nfs_infop;
struct nfs_client *clp = nfss->nfs_client;
+ unsigned int default_namelen =
+ clp->rpc_ops->version == 4 ? NFS4_MAXNAMLEN :
+ clp->rpc_ops->version == 3 ? NFS3_MAXNAMLEN : NFS2_MAXNAMLEN;
seq_printf(m, ",vers=%d", clp->rpc_ops->version);
seq_printf(m, ",rsize=%d", nfss->rsize);
seq_printf(m, ",wsize=%d", nfss->wsize);
+ if (nfss->bsize != 0)
+ seq_printf(m, ",bsize=%d", nfss->bsize);
+ if (nfss->namelen != default_namelen)
+ seq_printf(m, ",namelen=%d", nfss->namelen);
if (nfss->acregmin != 3*HZ || showdefaults)
seq_printf(m, ",acregmin=%d", nfss->acregmin/HZ);
if (nfss->acregmax != 60*HZ || showdefaults)
@@ -482,6 +490,18 @@ static void nfs_show_mount_options(struc
seq_printf(m, ",timeo=%lu", 10U * nfss->client->cl_timeout->to_initval / HZ);
seq_printf(m, ",retrans=%u", nfss->client->cl_timeout->to_retries);
seq_printf(m, ",sec=%s", nfs_pseudoflavour_to_name(nfss->client->cl_auth->au_flavor));
+
+ /*
+ * Missing options:
+ * port=

Probably should be supported.

+ * addr=

This one is already supported; see nfs_show_options().

+ * clientaddr=

This one isn't, and should be... would be useful for tracking down certain NFSv4 problems.

+ * mounthost=
+ * mountaddr=
> + * mountport=
> + * mountvers=
> + * mountproto=

And these mount* options are for the kernel's new mount protocol client. They aren't really useful for understanding steady-state NFS client behavior, they only effect mount-time behavior. begin:vcard
fn:Chuck Lever
n:Lever;Chuck
org:Oracle Corporation;Corporate Architecture: Linux Projects Group
adr:;;1015 Granger Avenue;Ann Arbor;MI;48104;USA
email;internet:chuck dot lever at nospam oracle dot com
title:Principal Member of Staff
tel;work:+1 248 614 5091
x-mozilla-html:FALSE
version:2.1
end:vcard