xref: /openbmc/linux/fs/nfs/nfs4sysctl.c (revision 95e9fd10)
1 /*
2  * linux/fs/nfs/nfs4sysctl.c
3  *
4  * Sysctl interface to NFS v4 parameters
5  *
6  * Copyright (c) 2006 Trond Myklebust <Trond.Myklebust@netapp.com>
7  */
8 #include <linux/sysctl.h>
9 #include <linux/nfs_idmap.h>
10 #include <linux/nfs_fs.h>
11 
12 #include "callback.h"
13 
14 static const int nfs_set_port_min = 0;
15 static const int nfs_set_port_max = 65535;
16 static struct ctl_table_header *nfs4_callback_sysctl_table;
17 
18 static ctl_table nfs4_cb_sysctls[] = {
19 	{
20 		.procname = "nfs_callback_tcpport",
21 		.data = &nfs_callback_set_tcpport,
22 		.maxlen = sizeof(int),
23 		.mode = 0644,
24 		.proc_handler = proc_dointvec_minmax,
25 		.extra1 = (int *)&nfs_set_port_min,
26 		.extra2 = (int *)&nfs_set_port_max,
27 	},
28 	{
29 		.procname = "idmap_cache_timeout",
30 		.data = &nfs_idmap_cache_timeout,
31 		.maxlen = sizeof(int),
32 		.mode = 0644,
33 		.proc_handler = proc_dointvec_jiffies,
34 	},
35 	{ }
36 };
37 
38 static ctl_table nfs4_cb_sysctl_dir[] = {
39 	{
40 		.procname = "nfs",
41 		.mode = 0555,
42 		.child = nfs4_cb_sysctls,
43 	},
44 	{ }
45 };
46 
47 static ctl_table nfs4_cb_sysctl_root[] = {
48 	{
49 		.procname = "fs",
50 		.mode = 0555,
51 		.child = nfs4_cb_sysctl_dir,
52 	},
53 	{ }
54 };
55 
56 int nfs4_register_sysctl(void)
57 {
58 	nfs4_callback_sysctl_table = register_sysctl_table(nfs4_cb_sysctl_root);
59 	if (nfs4_callback_sysctl_table == NULL)
60 		return -ENOMEM;
61 	return 0;
62 }
63 
64 void nfs4_unregister_sysctl(void)
65 {
66 	unregister_sysctl_table(nfs4_callback_sysctl_table);
67 	nfs4_callback_sysctl_table = NULL;
68 }
69