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_md5inum
;
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 struct 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_md5inum
,
230 .maxlen
= sizeof(afs_int32
),
232 .proc_handler
= &proc_dointvec
239 static struct ctl_table fs_sysctl_table
[] = {
241 #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
242 #if defined(CTL_UNNUMBERED)
243 .ctl_name
= CTL_UNNUMBERED
,
250 .child
= afs_sysctl_table
260 #if defined(REGISTER_SYSCTL_TABLE_NOFLAG)
261 afs_sysctl
= register_sysctl_table(fs_sysctl_table
);
263 afs_sysctl
= register_sysctl_table(fs_sysctl_table
, 0);
275 unregister_sysctl_table(afs_sysctl
);
280 #endif /* CONFIG_SYSCTL */