brintos

brintos / linux-shallow public Read only

0
0
Text · 5.4 KiB · c84df23 Raw
225 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Copyright (c) 2001-2005 Silicon Graphics, Inc.4 * All Rights Reserved.5 */6#include "xfs.h"7#include "xfs_error.h"8 9static struct ctl_table_header *xfs_table_header;10 11#ifdef CONFIG_PROC_FS12STATIC int13xfs_stats_clear_proc_handler(14	const struct ctl_table	*ctl,15	int			write,16	void			*buffer,17	size_t			*lenp,18	loff_t			*ppos)19{20	int		ret, *valp = ctl->data;21 22	ret = proc_dointvec_minmax(ctl, write, buffer, lenp, ppos);23 24	if (!ret && write && *valp) {25		xfs_stats_clearall(xfsstats.xs_stats);26		xfs_stats_clear = 0;27	}28 29	return ret;30}31 32STATIC int33xfs_panic_mask_proc_handler(34	const struct ctl_table	*ctl,35	int			write,36	void			*buffer,37	size_t			*lenp,38	loff_t			*ppos)39{40	int		ret, *valp = ctl->data;41 42	ret = proc_dointvec_minmax(ctl, write, buffer, lenp, ppos);43	if (!ret && write) {44		xfs_panic_mask = *valp;45#ifdef DEBUG46		xfs_panic_mask |= (XFS_PTAG_SHUTDOWN_CORRUPT | XFS_PTAG_LOGRES);47#endif48	}49	return ret;50}51#endif /* CONFIG_PROC_FS */52 53STATIC int54xfs_deprecated_dointvec_minmax(55	const struct ctl_table	*ctl,56	int			write,57	void			*buffer,58	size_t			*lenp,59	loff_t			*ppos)60{61	if (write) {62		printk_ratelimited(KERN_WARNING63				"XFS: %s sysctl option is deprecated.\n",64				ctl->procname);65	}66	return proc_dointvec_minmax(ctl, write, buffer, lenp, ppos);67}68 69static struct ctl_table xfs_table[] = {70	{71		.procname	= "irix_sgid_inherit",72		.data		= &xfs_params.sgid_inherit.val,73		.maxlen		= sizeof(int),74		.mode		= 0644,75		.proc_handler	= xfs_deprecated_dointvec_minmax,76		.extra1		= &xfs_params.sgid_inherit.min,77		.extra2		= &xfs_params.sgid_inherit.max78	},79	{80		.procname	= "irix_symlink_mode",81		.data		= &xfs_params.symlink_mode.val,82		.maxlen		= sizeof(int),83		.mode		= 0644,84		.proc_handler	= xfs_deprecated_dointvec_minmax,85		.extra1		= &xfs_params.symlink_mode.min,86		.extra2		= &xfs_params.symlink_mode.max87	},88	{89		.procname	= "panic_mask",90		.data		= &xfs_params.panic_mask.val,91		.maxlen		= sizeof(int),92		.mode		= 0644,93		.proc_handler	= xfs_panic_mask_proc_handler,94		.extra1		= &xfs_params.panic_mask.min,95		.extra2		= &xfs_params.panic_mask.max96	},97 98	{99		.procname	= "error_level",100		.data		= &xfs_params.error_level.val,101		.maxlen		= sizeof(int),102		.mode		= 0644,103		.proc_handler	= proc_dointvec_minmax,104		.extra1		= &xfs_params.error_level.min,105		.extra2		= &xfs_params.error_level.max106	},107	{108		.procname	= "xfssyncd_centisecs",109		.data		= &xfs_params.syncd_timer.val,110		.maxlen		= sizeof(int),111		.mode		= 0644,112		.proc_handler	= proc_dointvec_minmax,113		.extra1		= &xfs_params.syncd_timer.min,114		.extra2		= &xfs_params.syncd_timer.max115	},116	{117		.procname	= "inherit_sync",118		.data		= &xfs_params.inherit_sync.val,119		.maxlen		= sizeof(int),120		.mode		= 0644,121		.proc_handler	= proc_dointvec_minmax,122		.extra1		= &xfs_params.inherit_sync.min,123		.extra2		= &xfs_params.inherit_sync.max124	},125	{126		.procname	= "inherit_nodump",127		.data		= &xfs_params.inherit_nodump.val,128		.maxlen		= sizeof(int),129		.mode		= 0644,130		.proc_handler	= proc_dointvec_minmax,131		.extra1		= &xfs_params.inherit_nodump.min,132		.extra2		= &xfs_params.inherit_nodump.max133	},134	{135		.procname	= "inherit_noatime",136		.data		= &xfs_params.inherit_noatim.val,137		.maxlen		= sizeof(int),138		.mode		= 0644,139		.proc_handler	= proc_dointvec_minmax,140		.extra1		= &xfs_params.inherit_noatim.min,141		.extra2		= &xfs_params.inherit_noatim.max142	},143	{144		.procname	= "inherit_nosymlinks",145		.data		= &xfs_params.inherit_nosym.val,146		.maxlen		= sizeof(int),147		.mode		= 0644,148		.proc_handler	= proc_dointvec_minmax,149		.extra1		= &xfs_params.inherit_nosym.min,150		.extra2		= &xfs_params.inherit_nosym.max151	},152	{153		.procname	= "rotorstep",154		.data		= &xfs_params.rotorstep.val,155		.maxlen		= sizeof(int),156		.mode		= 0644,157		.proc_handler	= proc_dointvec_minmax,158		.extra1		= &xfs_params.rotorstep.min,159		.extra2		= &xfs_params.rotorstep.max160	},161	{162		.procname	= "inherit_nodefrag",163		.data		= &xfs_params.inherit_nodfrg.val,164		.maxlen		= sizeof(int),165		.mode		= 0644,166		.proc_handler	= proc_dointvec_minmax,167		.extra1		= &xfs_params.inherit_nodfrg.min,168		.extra2		= &xfs_params.inherit_nodfrg.max169	},170	{171		.procname	= "filestream_centisecs",172		.data		= &xfs_params.fstrm_timer.val,173		.maxlen		= sizeof(int),174		.mode		= 0644,175		.proc_handler	= proc_dointvec_minmax,176		.extra1		= &xfs_params.fstrm_timer.min,177		.extra2		= &xfs_params.fstrm_timer.max,178	},179	{180		.procname	= "speculative_prealloc_lifetime",181		.data		= &xfs_params.blockgc_timer.val,182		.maxlen		= sizeof(int),183		.mode		= 0644,184		.proc_handler	= proc_dointvec_minmax,185		.extra1		= &xfs_params.blockgc_timer.min,186		.extra2		= &xfs_params.blockgc_timer.max,187	},188	{189		.procname	= "speculative_cow_prealloc_lifetime",190		.data		= &xfs_params.blockgc_timer.val,191		.maxlen		= sizeof(int),192		.mode		= 0644,193		.proc_handler	= xfs_deprecated_dointvec_minmax,194		.extra1		= &xfs_params.blockgc_timer.min,195		.extra2		= &xfs_params.blockgc_timer.max,196	},197	/* please keep this the last entry */198#ifdef CONFIG_PROC_FS199	{200		.procname	= "stats_clear",201		.data		= &xfs_params.stats_clear.val,202		.maxlen		= sizeof(int),203		.mode		= 0644,204		.proc_handler	= xfs_stats_clear_proc_handler,205		.extra1		= &xfs_params.stats_clear.min,206		.extra2		= &xfs_params.stats_clear.max207	},208#endif /* CONFIG_PROC_FS */209};210 211int212xfs_sysctl_register(void)213{214	xfs_table_header = register_sysctl("fs/xfs", xfs_table);215	if (!xfs_table_header)216		return -ENOMEM;217	return 0;218}219 220void221xfs_sysctl_unregister(void)222{223	unregister_sysctl_table(xfs_table_header);224}225