2 * Copyright (c) 2001-2005 Silicon Graphics, Inc.
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License as
7 * published by the Free Software Foundation.
9 * This program is distributed in the hope that it would be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write the Free Software Foundation,
16 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 #include <linux/sysctl.h>
20 #include <linux/proc_fs.h>
22 static struct ctl_table_header
*xfs_table_header
;
26 xfs_stats_clear_proc_handler(
33 int c
, ret
, *valp
= ctl
->data
;
36 ret
= proc_dointvec_minmax(ctl
, write
, buffer
, lenp
, ppos
);
38 if (!ret
&& write
&& *valp
) {
39 printk("XFS Clearing xfsstats\n");
40 for_each_possible_cpu(c
) {
42 /* save vn_active, it's a universal truth! */
43 vn_active
= per_cpu(xfsstats
, c
).vn_active
;
44 memset(&per_cpu(xfsstats
, c
), 0,
45 sizeof(struct xfsstats
));
46 per_cpu(xfsstats
, c
).vn_active
= vn_active
;
54 #endif /* CONFIG_PROC_FS */
56 static ctl_table xfs_table
[] = {
58 .procname
= "irix_sgid_inherit",
59 .data
= &xfs_params
.sgid_inherit
.val
,
60 .maxlen
= sizeof(int),
62 .proc_handler
= proc_dointvec_minmax
,
63 .extra1
= &xfs_params
.sgid_inherit
.min
,
64 .extra2
= &xfs_params
.sgid_inherit
.max
67 .procname
= "irix_symlink_mode",
68 .data
= &xfs_params
.symlink_mode
.val
,
69 .maxlen
= sizeof(int),
71 .proc_handler
= proc_dointvec_minmax
,
72 .extra1
= &xfs_params
.symlink_mode
.min
,
73 .extra2
= &xfs_params
.symlink_mode
.max
76 .procname
= "panic_mask",
77 .data
= &xfs_params
.panic_mask
.val
,
78 .maxlen
= sizeof(int),
80 .proc_handler
= proc_dointvec_minmax
,
81 .extra1
= &xfs_params
.panic_mask
.min
,
82 .extra2
= &xfs_params
.panic_mask
.max
86 .procname
= "error_level",
87 .data
= &xfs_params
.error_level
.val
,
88 .maxlen
= sizeof(int),
90 .proc_handler
= proc_dointvec_minmax
,
91 .extra1
= &xfs_params
.error_level
.min
,
92 .extra2
= &xfs_params
.error_level
.max
95 .procname
= "xfssyncd_centisecs",
96 .data
= &xfs_params
.syncd_timer
.val
,
97 .maxlen
= sizeof(int),
99 .proc_handler
= proc_dointvec_minmax
,
100 .extra1
= &xfs_params
.syncd_timer
.min
,
101 .extra2
= &xfs_params
.syncd_timer
.max
104 .procname
= "inherit_sync",
105 .data
= &xfs_params
.inherit_sync
.val
,
106 .maxlen
= sizeof(int),
108 .proc_handler
= proc_dointvec_minmax
,
109 .extra1
= &xfs_params
.inherit_sync
.min
,
110 .extra2
= &xfs_params
.inherit_sync
.max
113 .procname
= "inherit_nodump",
114 .data
= &xfs_params
.inherit_nodump
.val
,
115 .maxlen
= sizeof(int),
117 .proc_handler
= proc_dointvec_minmax
,
118 .extra1
= &xfs_params
.inherit_nodump
.min
,
119 .extra2
= &xfs_params
.inherit_nodump
.max
122 .procname
= "inherit_noatime",
123 .data
= &xfs_params
.inherit_noatim
.val
,
124 .maxlen
= sizeof(int),
126 .proc_handler
= proc_dointvec_minmax
,
127 .extra1
= &xfs_params
.inherit_noatim
.min
,
128 .extra2
= &xfs_params
.inherit_noatim
.max
131 .procname
= "xfsbufd_centisecs",
132 .data
= &xfs_params
.xfs_buf_timer
.val
,
133 .maxlen
= sizeof(int),
135 .proc_handler
= proc_dointvec_minmax
,
136 .extra1
= &xfs_params
.xfs_buf_timer
.min
,
137 .extra2
= &xfs_params
.xfs_buf_timer
.max
140 .procname
= "age_buffer_centisecs",
141 .data
= &xfs_params
.xfs_buf_age
.val
,
142 .maxlen
= sizeof(int),
144 .proc_handler
= proc_dointvec_minmax
,
145 .extra1
= &xfs_params
.xfs_buf_age
.min
,
146 .extra2
= &xfs_params
.xfs_buf_age
.max
149 .procname
= "inherit_nosymlinks",
150 .data
= &xfs_params
.inherit_nosym
.val
,
151 .maxlen
= sizeof(int),
153 .proc_handler
= proc_dointvec_minmax
,
154 .extra1
= &xfs_params
.inherit_nosym
.min
,
155 .extra2
= &xfs_params
.inherit_nosym
.max
158 .procname
= "rotorstep",
159 .data
= &xfs_params
.rotorstep
.val
,
160 .maxlen
= sizeof(int),
162 .proc_handler
= proc_dointvec_minmax
,
163 .extra1
= &xfs_params
.rotorstep
.min
,
164 .extra2
= &xfs_params
.rotorstep
.max
167 .procname
= "inherit_nodefrag",
168 .data
= &xfs_params
.inherit_nodfrg
.val
,
169 .maxlen
= sizeof(int),
171 .proc_handler
= proc_dointvec_minmax
,
172 .extra1
= &xfs_params
.inherit_nodfrg
.min
,
173 .extra2
= &xfs_params
.inherit_nodfrg
.max
176 .procname
= "filestream_centisecs",
177 .data
= &xfs_params
.fstrm_timer
.val
,
178 .maxlen
= sizeof(int),
180 .proc_handler
= proc_dointvec_minmax
,
181 .extra1
= &xfs_params
.fstrm_timer
.min
,
182 .extra2
= &xfs_params
.fstrm_timer
.max
,
184 /* please keep this the last entry */
185 #ifdef CONFIG_PROC_FS
187 .procname
= "stats_clear",
188 .data
= &xfs_params
.stats_clear
.val
,
189 .maxlen
= sizeof(int),
191 .proc_handler
= xfs_stats_clear_proc_handler
,
192 .extra1
= &xfs_params
.stats_clear
.min
,
193 .extra2
= &xfs_params
.stats_clear
.max
195 #endif /* CONFIG_PROC_FS */
200 static ctl_table xfs_dir_table
[] = {
209 static ctl_table xfs_root_table
[] = {
213 .child
= xfs_dir_table
219 xfs_sysctl_register(void)
221 xfs_table_header
= register_sysctl_table(xfs_root_table
);
222 if (!xfs_table_header
)
228 xfs_sysctl_unregister(void)
230 unregister_sysctl_table(xfs_table_header
);