diff options
Diffstat (limited to 'fs/nfs/nfs4sysctl.c')
| -rw-r--r-- | fs/nfs/nfs4sysctl.c | 69 | 
1 files changed, 69 insertions, 0 deletions
diff --git a/fs/nfs/nfs4sysctl.c b/fs/nfs/nfs4sysctl.c new file mode 100644 index 00000000000..b6ebe7e445f --- /dev/null +++ b/fs/nfs/nfs4sysctl.c @@ -0,0 +1,69 @@ +/* + * linux/fs/nfs/nfs4sysctl.c + * + * Sysctl interface to NFS v4 parameters + * + * Copyright (c) 2006 Trond Myklebust <Trond.Myklebust@netapp.com> + */ +#include <linux/sysctl.h> +#include <linux/nfs_idmap.h> +#include <linux/nfs_fs.h> + +#include "nfs4_fs.h" +#include "callback.h" + +static const int nfs_set_port_min = 0; +static const int nfs_set_port_max = 65535; +static struct ctl_table_header *nfs4_callback_sysctl_table; + +static struct ctl_table nfs4_cb_sysctls[] = { +	{ +		.procname = "nfs_callback_tcpport", +		.data = &nfs_callback_set_tcpport, +		.maxlen = sizeof(int), +		.mode = 0644, +		.proc_handler = proc_dointvec_minmax, +		.extra1 = (int *)&nfs_set_port_min, +		.extra2 = (int *)&nfs_set_port_max, +	}, +	{ +		.procname = "idmap_cache_timeout", +		.data = &nfs_idmap_cache_timeout, +		.maxlen = sizeof(int), +		.mode = 0644, +		.proc_handler = proc_dointvec_jiffies, +	}, +	{ } +}; + +static struct ctl_table nfs4_cb_sysctl_dir[] = { +	{ +		.procname = "nfs", +		.mode = 0555, +		.child = nfs4_cb_sysctls, +	}, +	{ } +}; + +static struct ctl_table nfs4_cb_sysctl_root[] = { +	{ +		.procname = "fs", +		.mode = 0555, +		.child = nfs4_cb_sysctl_dir, +	}, +	{ } +}; + +int nfs4_register_sysctl(void) +{ +	nfs4_callback_sysctl_table = register_sysctl_table(nfs4_cb_sysctl_root); +	if (nfs4_callback_sysctl_table == NULL) +		return -ENOMEM; +	return 0; +} + +void nfs4_unregister_sysctl(void) +{ +	unregister_sysctl_table(nfs4_callback_sysctl_table); +	nfs4_callback_sysctl_table = NULL; +}  | 
