Linux NFS development
 help / color / mirror / Atom feed
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

      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