1 // SPDX-License-Identifier: GPL-2.0 << 2 /* 1 /* 3 * linux/fs/nfs/sysctl.c 2 * linux/fs/nfs/sysctl.c 4 * 3 * 5 * Sysctl interface to NFS parameters 4 * Sysctl interface to NFS parameters 6 */ 5 */ 7 #include <linux/types.h> 6 #include <linux/types.h> 8 #include <linux/linkage.h> 7 #include <linux/linkage.h> 9 #include <linux/ctype.h> 8 #include <linux/ctype.h> 10 #include <linux/fs.h> 9 #include <linux/fs.h> 11 #include <linux/sysctl.h> 10 #include <linux/sysctl.h> 12 #include <linux/module.h> 11 #include <linux/module.h> >> 12 #include <linux/nfs4.h> >> 13 #include <linux/nfs_idmap.h> 13 #include <linux/nfs_fs.h> 14 #include <linux/nfs_fs.h> 14 15 >> 16 #include "callback.h" >> 17 >> 18 static const int nfs_set_port_min = 0; >> 19 static const int nfs_set_port_max = 65535; 15 static struct ctl_table_header *nfs_callback_s 20 static struct ctl_table_header *nfs_callback_sysctl_table; 16 21 17 static struct ctl_table nfs_cb_sysctls[] = { !! 22 static ctl_table nfs_cb_sysctls[] = { >> 23 #ifdef CONFIG_NFS_V4 >> 24 { >> 25 .ctl_name = CTL_UNNUMBERED, >> 26 .procname = "nfs_callback_tcpport", >> 27 .data = &nfs_callback_set_tcpport, >> 28 .maxlen = sizeof(int), >> 29 .mode = 0644, >> 30 .proc_handler = &proc_dointvec_minmax, >> 31 .extra1 = (int *)&nfs_set_port_min, >> 32 .extra2 = (int *)&nfs_set_port_max, >> 33 }, 18 { 34 { >> 35 .ctl_name = CTL_UNNUMBERED, >> 36 .procname = "idmap_cache_timeout", >> 37 .data = &nfs_idmap_cache_timeout, >> 38 .maxlen = sizeof(int), >> 39 .mode = 0644, >> 40 .proc_handler = &proc_dointvec_jiffies, >> 41 .strategy = &sysctl_jiffies, >> 42 }, >> 43 #endif >> 44 { >> 45 .ctl_name = CTL_UNNUMBERED, 19 .procname = "nfs_mountpo 46 .procname = "nfs_mountpoint_timeout", 20 .data = &nfs_mountpo 47 .data = &nfs_mountpoint_expiry_timeout, 21 .maxlen = sizeof(nfs_m 48 .maxlen = sizeof(nfs_mountpoint_expiry_timeout), 22 .mode = 0644, 49 .mode = 0644, 23 .proc_handler = proc_dointve !! 50 .proc_handler = &proc_dointvec_jiffies, >> 51 .strategy = &sysctl_jiffies, 24 }, 52 }, 25 { 53 { >> 54 .ctl_name = CTL_UNNUMBERED, 26 .procname = "nfs_congest 55 .procname = "nfs_congestion_kb", 27 .data = &nfs_congest 56 .data = &nfs_congestion_kb, 28 .maxlen = sizeof(nfs_c 57 .maxlen = sizeof(nfs_congestion_kb), 29 .mode = 0644, 58 .mode = 0644, 30 .proc_handler = proc_dointve !! 59 .proc_handler = &proc_dointvec, >> 60 }, >> 61 { .ctl_name = 0 } >> 62 }; >> 63 >> 64 static ctl_table nfs_cb_sysctl_dir[] = { >> 65 { >> 66 .ctl_name = CTL_UNNUMBERED, >> 67 .procname = "nfs", >> 68 .mode = 0555, >> 69 .child = nfs_cb_sysctls, >> 70 }, >> 71 { .ctl_name = 0 } >> 72 }; >> 73 >> 74 static ctl_table nfs_cb_sysctl_root[] = { >> 75 { >> 76 .ctl_name = CTL_FS, >> 77 .procname = "fs", >> 78 .mode = 0555, >> 79 .child = nfs_cb_sysctl_dir, 31 }, 80 }, >> 81 { .ctl_name = 0 } 32 }; 82 }; 33 83 34 int nfs_register_sysctl(void) 84 int nfs_register_sysctl(void) 35 { 85 { 36 nfs_callback_sysctl_table = register_s !! 86 nfs_callback_sysctl_table = register_sysctl_table(nfs_cb_sysctl_root); 37 if (nfs_callback_sysctl_table == NULL) 87 if (nfs_callback_sysctl_table == NULL) 38 return -ENOMEM; 88 return -ENOMEM; 39 return 0; 89 return 0; 40 } 90 } 41 91 42 void nfs_unregister_sysctl(void) 92 void nfs_unregister_sysctl(void) 43 { 93 { 44 unregister_sysctl_table(nfs_callback_s 94 unregister_sysctl_table(nfs_callback_sysctl_table); 45 nfs_callback_sysctl_table = NULL; 95 nfs_callback_sysctl_table = NULL; 46 } 96 } 47 97
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.