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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox