1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2001-2005 Silicon Graphics, Inc.
9 static struct ctl_table_header
*xfs_table_header
;
13 xfs_stats_clear_proc_handler(
14 struct ctl_table
*ctl
,
20 int ret
, *valp
= ctl
->data
;
22 ret
= proc_dointvec_minmax(ctl
, write
, buffer
, lenp
, ppos
);
24 if (!ret
&& write
&& *valp
) {
25 xfs_stats_clearall(xfsstats
.xs_stats
);
33 xfs_panic_mask_proc_handler(
34 struct ctl_table
*ctl
,
40 int ret
, *valp
= ctl
->data
;
42 ret
= proc_dointvec_minmax(ctl
, write
, buffer
, lenp
, ppos
);
44 xfs_panic_mask
= *valp
;
46 xfs_panic_mask
|= (XFS_PTAG_SHUTDOWN_CORRUPT
| XFS_PTAG_LOGRES
);
51 #endif /* CONFIG_PROC_FS */
54 xfs_deprecate_irix_sgid_inherit_proc_handler(
55 struct ctl_table
*ctl
,
62 printk_once(KERN_WARNING
63 "XFS: " "%s sysctl option is deprecated.\n",
66 return proc_dointvec_minmax(ctl
, write
, buffer
, lenp
, ppos
);
70 xfs_deprecate_irix_symlink_mode_proc_handler(
71 struct ctl_table
*ctl
,
78 printk_once(KERN_WARNING
79 "XFS: " "%s sysctl option is deprecated.\n",
82 return proc_dointvec_minmax(ctl
, write
, buffer
, lenp
, ppos
);
85 static struct ctl_table xfs_table
[] = {
87 .procname
= "irix_sgid_inherit",
88 .data
= &xfs_params
.sgid_inherit
.val
,
89 .maxlen
= sizeof(int),
91 .proc_handler
= xfs_deprecate_irix_sgid_inherit_proc_handler
,
92 .extra1
= &xfs_params
.sgid_inherit
.min
,
93 .extra2
= &xfs_params
.sgid_inherit
.max
96 .procname
= "irix_symlink_mode",
97 .data
= &xfs_params
.symlink_mode
.val
,
98 .maxlen
= sizeof(int),
100 .proc_handler
= xfs_deprecate_irix_symlink_mode_proc_handler
,
101 .extra1
= &xfs_params
.symlink_mode
.min
,
102 .extra2
= &xfs_params
.symlink_mode
.max
105 .procname
= "panic_mask",
106 .data
= &xfs_params
.panic_mask
.val
,
107 .maxlen
= sizeof(int),
109 .proc_handler
= xfs_panic_mask_proc_handler
,
110 .extra1
= &xfs_params
.panic_mask
.min
,
111 .extra2
= &xfs_params
.panic_mask
.max
115 .procname
= "error_level",
116 .data
= &xfs_params
.error_level
.val
,
117 .maxlen
= sizeof(int),
119 .proc_handler
= proc_dointvec_minmax
,
120 .extra1
= &xfs_params
.error_level
.min
,
121 .extra2
= &xfs_params
.error_level
.max
124 .procname
= "xfssyncd_centisecs",
125 .data
= &xfs_params
.syncd_timer
.val
,
126 .maxlen
= sizeof(int),
128 .proc_handler
= proc_dointvec_minmax
,
129 .extra1
= &xfs_params
.syncd_timer
.min
,
130 .extra2
= &xfs_params
.syncd_timer
.max
133 .procname
= "inherit_sync",
134 .data
= &xfs_params
.inherit_sync
.val
,
135 .maxlen
= sizeof(int),
137 .proc_handler
= proc_dointvec_minmax
,
138 .extra1
= &xfs_params
.inherit_sync
.min
,
139 .extra2
= &xfs_params
.inherit_sync
.max
142 .procname
= "inherit_nodump",
143 .data
= &xfs_params
.inherit_nodump
.val
,
144 .maxlen
= sizeof(int),
146 .proc_handler
= proc_dointvec_minmax
,
147 .extra1
= &xfs_params
.inherit_nodump
.min
,
148 .extra2
= &xfs_params
.inherit_nodump
.max
151 .procname
= "inherit_noatime",
152 .data
= &xfs_params
.inherit_noatim
.val
,
153 .maxlen
= sizeof(int),
155 .proc_handler
= proc_dointvec_minmax
,
156 .extra1
= &xfs_params
.inherit_noatim
.min
,
157 .extra2
= &xfs_params
.inherit_noatim
.max
160 .procname
= "inherit_nosymlinks",
161 .data
= &xfs_params
.inherit_nosym
.val
,
162 .maxlen
= sizeof(int),
164 .proc_handler
= proc_dointvec_minmax
,
165 .extra1
= &xfs_params
.inherit_nosym
.min
,
166 .extra2
= &xfs_params
.inherit_nosym
.max
169 .procname
= "rotorstep",
170 .data
= &xfs_params
.rotorstep
.val
,
171 .maxlen
= sizeof(int),
173 .proc_handler
= proc_dointvec_minmax
,
174 .extra1
= &xfs_params
.rotorstep
.min
,
175 .extra2
= &xfs_params
.rotorstep
.max
178 .procname
= "inherit_nodefrag",
179 .data
= &xfs_params
.inherit_nodfrg
.val
,
180 .maxlen
= sizeof(int),
182 .proc_handler
= proc_dointvec_minmax
,
183 .extra1
= &xfs_params
.inherit_nodfrg
.min
,
184 .extra2
= &xfs_params
.inherit_nodfrg
.max
187 .procname
= "filestream_centisecs",
188 .data
= &xfs_params
.fstrm_timer
.val
,
189 .maxlen
= sizeof(int),
191 .proc_handler
= proc_dointvec_minmax
,
192 .extra1
= &xfs_params
.fstrm_timer
.min
,
193 .extra2
= &xfs_params
.fstrm_timer
.max
,
196 .procname
= "speculative_prealloc_lifetime",
197 .data
= &xfs_params
.eofb_timer
.val
,
198 .maxlen
= sizeof(int),
200 .proc_handler
= proc_dointvec_minmax
,
201 .extra1
= &xfs_params
.eofb_timer
.min
,
202 .extra2
= &xfs_params
.eofb_timer
.max
,
205 .procname
= "speculative_cow_prealloc_lifetime",
206 .data
= &xfs_params
.cowb_timer
.val
,
207 .maxlen
= sizeof(int),
209 .proc_handler
= proc_dointvec_minmax
,
210 .extra1
= &xfs_params
.cowb_timer
.min
,
211 .extra2
= &xfs_params
.cowb_timer
.max
,
213 /* please keep this the last entry */
214 #ifdef CONFIG_PROC_FS
216 .procname
= "stats_clear",
217 .data
= &xfs_params
.stats_clear
.val
,
218 .maxlen
= sizeof(int),
220 .proc_handler
= xfs_stats_clear_proc_handler
,
221 .extra1
= &xfs_params
.stats_clear
.min
,
222 .extra2
= &xfs_params
.stats_clear
.max
224 #endif /* CONFIG_PROC_FS */
229 static struct ctl_table xfs_dir_table
[] = {
238 static struct ctl_table xfs_root_table
[] = {
242 .child
= xfs_dir_table
248 xfs_sysctl_register(void)
250 xfs_table_header
= register_sysctl_table(xfs_root_table
);
251 if (!xfs_table_header
)
257 xfs_sysctl_unregister(void)
259 unregister_sysctl_table(xfs_table_header
);