2 * osi_sysctl.c: Linux sysctl interface to OpenAFS
6 * Written Jan 30, 2002 by Kris Van Hees (Sine Nomine Associates)
10 #include "afs/param.h"
12 #include "afs/sysincludes.h" /* Standard vendor system headers */
13 #include "afsincludes.h" /* Afs-based standard headers */
14 #include "afs/afs_stats.h" /* afs statistics */
16 #include <linux/sysctl.h>
17 #ifdef HAVE_LINUX_CONFIG_H
18 #include <linux/config.h>
22 extern afs_int32 afs_new_inum;
24 /* From afs_analyze.c */
25 extern afs_int32 hm_retry_RO;
26 extern afs_int32 hm_retry_RW;
27 extern afs_int32 hm_retry_int;
28 extern afs_int32 afs_blocksUsed_0;
29 extern afs_int32 afs_blocksUsed_1;
30 extern afs_int32 afs_blocksUsed_2;
31 extern afs_int32 afs_pct1;
32 extern afs_int32 afs_pct2;
35 static struct ctl_table_header *afs_sysctl = NULL;
37 static ctl_table afs_sysctl_table[] = {
39 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
40 #if defined(CTL_UNNUMBERED)
41 .ctl_name = CTL_UNNUMBERED,
46 .procname = "hm_retry_RO",
48 .maxlen = sizeof(afs_int32),
50 .proc_handler = &proc_dointvec
53 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
54 #if defined(CTL_UNNUMBERED)
55 .ctl_name = CTL_UNNUMBERED,
60 .procname = "hm_retry_RW",
62 .maxlen = sizeof(afs_int32),
64 .proc_handler = &proc_dointvec
67 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
68 #if defined(CTL_UNNUMBERED)
69 .ctl_name = CTL_UNNUMBERED,
74 .procname = "hm_retry_int",
75 .data = &hm_retry_int,
76 .maxlen = sizeof(afs_int32),
78 .proc_handler = &proc_dointvec
81 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
82 #if defined(CTL_UNNUMBERED)
83 .ctl_name = CTL_UNNUMBERED,
90 .maxlen = sizeof(afs_int32),
92 .proc_handler = &proc_dointvec
95 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
96 #if defined(CTL_UNNUMBERED)
97 .ctl_name = CTL_UNNUMBERED,
102 .procname = "rx_deadtime",
103 .data = &afs_rx_deadtime,
104 .maxlen = sizeof(afs_int32),
106 .proc_handler = &proc_dointvec
109 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
110 #if defined(CTL_UNNUMBERED)
111 .ctl_name = CTL_UNNUMBERED,
116 .procname = "bkVolPref",
117 .data = &afs_bkvolpref,
118 .maxlen = sizeof(afs_int32),
120 .proc_handler = &proc_dointvec
123 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
124 #if defined(CTL_UNNUMBERED)
125 .ctl_name = CTL_UNNUMBERED,
130 .procname = "afs_blocksUsed",
131 .data = &afs_blocksUsed,
132 .maxlen = sizeof(afs_int32),
134 .proc_handler = &proc_dointvec
137 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
138 #if defined(CTL_UNNUMBERED)
139 .ctl_name = CTL_UNNUMBERED,
144 .procname = "afs_blocksUsed_0",
145 .data = &afs_blocksUsed_0,
146 .maxlen = sizeof(afs_int32),
148 .proc_handler = &proc_dointvec
151 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
152 #if defined(CTL_UNNUMBERED)
153 .ctl_name = CTL_UNNUMBERED,
158 .procname = "afs_blocksUsed_1",
159 .data = &afs_blocksUsed_1,
160 .maxlen = sizeof(afs_int32),
162 .proc_handler = &proc_dointvec
165 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
166 #if defined(CTL_UNNUMBERED)
167 .ctl_name = CTL_UNNUMBERED,
172 .procname = "afs_blocksUsed_2",
173 .data = &afs_blocksUsed_2,
174 .maxlen = sizeof(afs_int32),
176 .proc_handler = &proc_dointvec
179 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
180 #if defined(CTL_UNNUMBERED)
181 .ctl_name = CTL_UNNUMBERED,
186 .procname = "afs_pct1",
188 .maxlen = sizeof(afs_int32),
190 .proc_handler = &proc_dointvec
193 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
194 #if defined(CTL_UNNUMBERED)
195 .ctl_name = CTL_UNNUMBERED,
200 .procname = "afs_pct2",
202 .maxlen = sizeof(afs_int32),
204 .proc_handler = &proc_dointvec
207 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
208 #if defined(CTL_UNNUMBERED)
209 .ctl_name = CTL_UNNUMBERED,
214 .procname = "afs_cacheBlocks",
215 .data = &afs_cacheBlocks,
216 .maxlen = sizeof(afs_int32),
218 .proc_handler = &proc_dointvec
221 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
222 #if defined(CTL_UNNUMBERED)
223 .ctl_name = CTL_UNNUMBERED,
228 .procname = "md5inum",
229 .data = &afs_new_inum,
230 .maxlen = sizeof(afs_int32),
232 .proc_handler = &proc_dointvec
237 static ctl_table fs_sysctl_table[] = {
239 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
240 #if defined(CTL_UNNUMBERED)
241 .ctl_name = CTL_UNNUMBERED,
248 .child = afs_sysctl_table
256 #if defined(REGISTER_SYSCTL_TABLE_NOFLAG)
257 afs_sysctl = register_sysctl_table(fs_sysctl_table);
259 afs_sysctl = register_sysctl_table(fs_sysctl_table, 0);
271 unregister_sysctl_table(afs_sysctl);
276 #endif /* CONFIG_SYSCTL */