xref: /linux/fs/xfs/xfs_sysctl.h (revision e445fba2d76369d72b497ecadf6b9787930693d9)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Copyright (c) 2001-2005 Silicon Graphics, Inc.
4  * All Rights Reserved.
5  */
6 #ifndef __XFS_SYSCTL_H__
7 #define __XFS_SYSCTL_H__
8 
9 #include <linux/sysctl.h>
10 
11 /*
12  * Tunable xfs parameters
13  */
14 
15 typedef struct xfs_sysctl_val {
16 	int min;
17 	int val;
18 	int max;
19 } xfs_sysctl_val_t;
20 
21 typedef struct xfs_param {
22 	xfs_sysctl_val_t panic_mask;	/* bitmask to cause panic on errors. */
23 	xfs_sysctl_val_t error_level;	/* Degree of reporting for problems  */
24 	xfs_sysctl_val_t syncd_timer;	/* Interval between xfssyncd wakeups */
25 	xfs_sysctl_val_t stats_clear;	/* Reset all XFS statistics to zero. */
26 	xfs_sysctl_val_t inherit_sync;	/* Inherit the "sync" inode flag. */
27 	xfs_sysctl_val_t inherit_nodump;/* Inherit the "nodump" inode flag. */
28 	xfs_sysctl_val_t inherit_noatim;/* Inherit the "noatime" inode flag. */
29 	xfs_sysctl_val_t inherit_nosym;	/* Inherit the "nosymlinks" flag. */
30 	xfs_sysctl_val_t rotorstep;	/* inode32 AG rotoring control knob */
31 	xfs_sysctl_val_t inherit_nodfrg;/* Inherit the "nodefrag" inode flag. */
32 	xfs_sysctl_val_t fstrm_timer;	/* Filestream dir-AG assoc'n timeout. */
33 	xfs_sysctl_val_t blockgc_timer;	/* Interval between blockgc scans */
34 } xfs_param_t;
35 
36 /*
37  * xfs_error_level:
38  *
39  * How much error reporting will be done when internal problems are
40  * encountered.  These problems normally return an EFSCORRUPTED to their
41  * caller, with no other information reported.
42  *
43  * 0	No error reports
44  * 1	Report EFSCORRUPTED errors that will cause a filesystem shutdown
45  * 5	Report all EFSCORRUPTED errors (all of the above errors, plus any
46  *	additional errors that are known to not cause shutdowns)
47  *
48  * xfs_panic_mask bit 0x8 turns the error reports into panics
49  */
50 
51 enum {
52 	/* XFS_REFCACHE_SIZE = 1 */
53 	/* XFS_REFCACHE_PURGE = 2 */
54 	/* XFS_RESTRICT_CHOWN = 3 */
55 	XFS_SGID_INHERIT = 4,
56 	XFS_SYMLINK_MODE = 5,
57 	XFS_PANIC_MASK = 6,
58 	XFS_ERRLEVEL = 7,
59 	XFS_SYNCD_TIMER = 8,
60 	/* XFS_PROBE_DMAPI = 9 */
61 	/* XFS_PROBE_IOOPS = 10 */
62 	/* XFS_PROBE_QUOTA = 11 */
63 	XFS_STATS_CLEAR = 12,
64 	XFS_INHERIT_SYNC = 13,
65 	XFS_INHERIT_NODUMP = 14,
66 	XFS_INHERIT_NOATIME = 15,
67 	XFS_BUF_TIMER = 16,
68 	XFS_BUF_AGE = 17,
69 	/* XFS_IO_BYPASS = 18 */
70 	XFS_INHERIT_NOSYM = 19,
71 	XFS_ROTORSTEP = 20,
72 	XFS_INHERIT_NODFRG = 21,
73 	XFS_FILESTREAM_TIMER = 22,
74 };
75 
76 extern xfs_param_t	xfs_params;
77 
78 struct xfs_globals {
79 #ifdef DEBUG
80 	int	pwork_threads;		/* parallel workqueue threads */
81 	bool	larp;			/* log attribute replay */
82 #endif
83 	int	bload_leaf_slack;	/* btree bulk load leaf slack */
84 	int	bload_node_slack;	/* btree bulk load node slack */
85 	int	log_recovery_delay;	/* log recovery delay (secs) */
86 	int	mount_delay;		/* mount setup delay (secs) */
87 	bool	bug_on_assert;		/* BUG() the kernel on assert failure */
88 	bool	always_cow;		/* use COW fork for all overwrites */
89 };
90 extern struct xfs_globals	xfs_globals;
91 
92 #ifdef CONFIG_SYSCTL
93 extern int xfs_sysctl_register(void);
94 extern void xfs_sysctl_unregister(void);
95 #else
96 # define xfs_sysctl_register()		(0)
97 # define xfs_sysctl_unregister()	do { } while (0)
98 #endif /* CONFIG_SYSCTL */
99 
100 #endif /* __XFS_SYSCTL_H__ */
101