From: Trond Myklebust <trond.myklebust@fys.uio.no>
To: Olaf Kirch <okir@suse.de>
Cc: nfs@lists.sourceforge.net
Subject: Re: [PATCH 2/4] Add /proc/sys/fs/nfs sysctls to nfs module
Date: Thu, 03 Aug 2006 13:11:25 -0400 [thread overview]
Message-ID: <1154625085.5774.98.camel@localhost> (raw)
In-Reply-To: <20060803110538.GA17168@suse.de>
On Thu, 2006-08-03 at 13:05 +0200, Olaf Kirch wrote:
> From: okir@suse.de
> Subject: Add /proc/sys/fs/nfs sysctls to nfs module
>
> This patch adds the plumbing for adding nfs-specific sysctls to
> fs/nfs, and makes nfs_max_readahead tunable as suggested.
Please see fs/nfs/sysctl.c. All new client sysctls can/should be added
there.
Cheers,
Trond
> Signed-off-by: okir@suse.de
>
> fs/nfs/inode.c | 48 +++++++++++++++++++++++++++++++++++++++++-------
> 1 files changed, 41 insertions(+), 7 deletions(-)
>
> Index: linux-2.6.18/fs/nfs/inode.c
> ===================================================================
> --- linux-2.6.18.orig/fs/nfs/inode.c
> +++ linux-2.6.18/fs/nfs/inode.c
> @@ -33,6 +33,7 @@
> #include <linux/lockd/bind.h>
> #include <linux/smp_lock.h>
> #include <linux/seq_file.h>
> +#include <linux/sysctl.h>
> #include <linux/mount.h>
> #include <linux/nfs_idmap.h>
> #include <linux/vfs.h>
> @@ -48,13 +49,15 @@
> #define NFSDBG_FACILITY NFSDBG_VFS
> #define NFS_PARANOIA 1
>
> -/* Maximum number of readahead requests
> - * FIXME: this should really be a sysctl so that users may tune it to suit
> - * their needs. People that do NFS over a slow network, might for
> - * instance want to reduce it to something closer to 1 for improved
> - * interactive response.
> +/* Maximum number of readahead requests.
> + *
> + * People who do NFS over a slow network may want to reduce it to
> + * something closer to 1 for improved interactive response.
> */
> -#define NFS_MAX_READAHEAD (RPC_DEF_SLOT_TABLE - 1)
> +static unsigned int nfs_max_readahead = RPC_DEF_SLOT_TABLE - 1;
> +static unsigned int nfs_max_readahead_min = 0;
> +static unsigned int nfs_max_readahead_max = RPC_MAX_SLOT_TABLE - 1;
> +
>
> static void nfs_invalidate_inode(struct inode *);
> static int nfs_update_inode(struct inode *, struct nfs_fattr *);
> @@ -341,7 +344,7 @@ nfs_sb_init(struct super_block *sb, rpc_
> server->acdirmin = server->acdirmax = 0;
> sb->s_flags |= MS_SYNCHRONOUS;
> }
> - server->backing_dev_info.ra_pages = server->rpages * NFS_MAX_READAHEAD;
> + server->backing_dev_info.ra_pages = server->rpages * nfs_max_readahead;
>
> sb->s_maxbytes = fsinfo.maxfilesize;
> if (sb->s_maxbytes > MAX_LFS_FILESIZE)
> @@ -2289,12 +2292,35 @@ static void nfs_destroy_inodecache(void)
> }
>
> /*
> + * NFS sysctls
> + */
> +static struct ctl_table_header *nfs_sysctl_table;
> +
> +static ctl_table nfs_sysctls[] = {
> + {
> + .ctl_name = -2,
> + .procname = "nfs_max_readahead",
> + .data = &nfs_max_readahead,
> + .maxlen = sizeof(unsigned int),
> + .mode = 0644,
> + .proc_handler = &proc_dointvec_minmax,
> + .strategy = &sysctl_intvec,
> + .extra1 = &nfs_max_readahead_min,
> + .extra2 = &nfs_max_readahead_max
> + },
> + { .ctl_name = 0 }
> +};
> +
> +/*
> * Initialize NFS
> */
> static int __init init_nfs_fs(void)
> {
> + struct ctl_path ctl_path[] = { { CTL_FS, "fs", 0555 }, { -2, "nfs", 0555 }, { 0 } };
> int err;
>
> + nfs_sysctl_table = register_sysctl_table_path(nfs_sysctls, ctl_path);
> +
> err = nfs_init_nfspagecache();
> if (err)
> goto out4;
> @@ -2342,6 +2368,10 @@ out2:
> out3:
> nfs_destroy_nfspagecache();
> out4:
> + if (nfs_sysctl_table)
> + unregister_sysctl_table(nfs_sysctl_table);
> + nfs_sysctl_table = NULL;
> +
> return err;
> }
>
> @@ -2359,6 +2389,10 @@ static void __exit exit_nfs_fs(void)
> #endif
> unregister_filesystem(&nfs_fs_type);
> unregister_nfs4fs();
> +
> + if (nfs_sysctl_table)
> + unregister_sysctl_table(nfs_sysctl_table);
> + nfs_sysctl_table = NULL;
> }
>
> /* Not quite true; I just maintain it */
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys -- and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> NFS maillist - NFS@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/nfs
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
NFS maillist - NFS@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/nfs
prev parent reply other threads:[~2006-08-03 17:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-03 11:05 [PATCH 2/4] Add /proc/sys/fs/nfs sysctls to nfs module Olaf Kirch
2006-08-03 16:49 ` Chuck Lever
2006-08-03 17:11 ` Trond Myklebust [this message]
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=1154625085.5774.98.camel@localhost \
--to=trond.myklebust@fys.uio.no \
--cc=nfs@lists.sourceforge.net \
--cc=okir@suse.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.