1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2001-2005 Silicon Graphics, Inc.
7 #include <linux/sysctl.h>
8 #include <linux/proc_fs.h>
10 #include "xfs_stats.h"
12 static struct ctl_table_header
*xfs_table_header
;
16 xfs_stats_clear_proc_handler(
17 struct ctl_table
*ctl
,
23 int ret
, *valp
= ctl
->data
;
25 ret
= proc_dointvec_minmax(ctl
, write
, buffer
, lenp
, ppos
);
27 if (!ret
&& write
&& *valp
) {
28 xfs_stats_clearall(xfsstats
.xs_stats
);
36 xfs_panic_mask_proc_handler(
37 struct ctl_table
*ctl
,
43 int ret
, *valp
= ctl
->data
;
45 ret
= proc_dointvec_minmax(ctl
, write
, buffer
, lenp
, ppos
);
47 xfs_panic_mask
= *valp
;
49 xfs_panic_mask
|= (XFS_PTAG_SHUTDOWN_CORRUPT
| XFS_PTAG_LOGRES
);
54 #endif /* CONFIG_PROC_FS */
56 static struct 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
= xfs_panic_mask_proc_handler
,
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
= "inherit_nosymlinks",
132 .data
= &xfs_params
.inherit_nosym
.val
,
133 .maxlen
= sizeof(int),
135 .proc_handler
= proc_dointvec_minmax
,
136 .extra1
= &xfs_params
.inherit_nosym
.min
,
137 .extra2
= &xfs_params
.inherit_nosym
.max
140 .procname
= "rotorstep",
141 .data
= &xfs_params
.rotorstep
.val
,
142 .maxlen
= sizeof(int),
144 .proc_handler
= proc_dointvec_minmax
,
145 .extra1
= &xfs_params
.rotorstep
.min
,
146 .extra2
= &xfs_params
.rotorstep
.max
149 .procname
= "inherit_nodefrag",
150 .data
= &xfs_params
.inherit_nodfrg
.val
,
151 .maxlen
= sizeof(int),
153 .proc_handler
= proc_dointvec_minmax
,
154 .extra1
= &xfs_params
.inherit_nodfrg
.min
,
155 .extra2
= &xfs_params
.inherit_nodfrg
.max
158 .procname
= "filestream_centisecs",
159 .data
= &xfs_params
.fstrm_timer
.val
,
160 .maxlen
= sizeof(int),
162 .proc_handler
= proc_dointvec_minmax
,
163 .extra1
= &xfs_params
.fstrm_timer
.min
,
164 .extra2
= &xfs_params
.fstrm_timer
.max
,
167 .procname
= "speculative_prealloc_lifetime",
168 .data
= &xfs_params
.eofb_timer
.val
,
169 .maxlen
= sizeof(int),
171 .proc_handler
= proc_dointvec_minmax
,
172 .extra1
= &xfs_params
.eofb_timer
.min
,
173 .extra2
= &xfs_params
.eofb_timer
.max
,
176 .procname
= "speculative_cow_prealloc_lifetime",
177 .data
= &xfs_params
.cowb_timer
.val
,
178 .maxlen
= sizeof(int),
180 .proc_handler
= proc_dointvec_minmax
,
181 .extra1
= &xfs_params
.cowb_timer
.min
,
182 .extra2
= &xfs_params
.cowb_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 struct ctl_table xfs_dir_table
[] = {
209 static struct 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
);