7aea195ddb353772c736d2984f000231b3b51bee
[releases.git] / sysctl.c
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * linux/fs/nfs/sysctl.c
4  *
5  * Sysctl interface to NFS parameters
6  */
7 #include <linux/types.h>
8 #include <linux/linkage.h>
9 #include <linux/ctype.h>
10 #include <linux/fs.h>
11 #include <linux/sysctl.h>
12 #include <linux/module.h>
13 #include <linux/nfs_fs.h>
14
15 static struct ctl_table_header *nfs_callback_sysctl_table;
16
17 static struct ctl_table nfs_cb_sysctls[] = {
18         {
19                 .procname       = "nfs_mountpoint_timeout",
20                 .data           = &nfs_mountpoint_expiry_timeout,
21                 .maxlen         = sizeof(nfs_mountpoint_expiry_timeout),
22                 .mode           = 0644,
23                 .proc_handler   = proc_dointvec_jiffies,
24         },
25         {
26                 .procname       = "nfs_congestion_kb",
27                 .data           = &nfs_congestion_kb,
28                 .maxlen         = sizeof(nfs_congestion_kb),
29                 .mode           = 0644,
30                 .proc_handler   = proc_dointvec,
31         },
32         { }
33 };
34
35 static struct ctl_table nfs_cb_sysctl_dir[] = {
36         {
37                 .procname = "nfs",
38                 .mode = 0555,
39                 .child = nfs_cb_sysctls,
40         },
41         { }
42 };
43
44 static struct ctl_table nfs_cb_sysctl_root[] = {
45         {
46                 .procname = "fs",
47                 .mode = 0555,
48                 .child = nfs_cb_sysctl_dir,
49         },
50         { }
51 };
52
53 int nfs_register_sysctl(void)
54 {
55         nfs_callback_sysctl_table = register_sysctl_table(nfs_cb_sysctl_root);
56         if (nfs_callback_sysctl_table == NULL)
57                 return -ENOMEM;
58         return 0;
59 }
60
61 void nfs_unregister_sysctl(void)
62 {
63         unregister_sysctl_table(nfs_callback_sysctl_table);
64         nfs_callback_sysctl_table = NULL;
65 }