cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

xfs_sysctl.c (5709B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      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_FS
     12STATIC int
     13xfs_stats_clear_proc_handler(
     14	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 int
     33xfs_panic_mask_proc_handler(
     34	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 DEBUG
     46		xfs_panic_mask |= (XFS_PTAG_SHUTDOWN_CORRUPT | XFS_PTAG_LOGRES);
     47#endif
     48	}
     49	return ret;
     50}
     51#endif /* CONFIG_PROC_FS */
     52
     53STATIC int
     54xfs_deprecated_dointvec_minmax(
     55	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_WARNING
     63				"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.max
     78	},
     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.max
     87	},
     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.max
     96	},
     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.max
    106	},
    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.max
    115	},
    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.max
    124	},
    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.max
    133	},
    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.max
    142	},
    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.max
    151	},
    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.max
    160	},
    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.max
    169	},
    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_FS
    199	{
    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.max
    207	},
    208#endif /* CONFIG_PROC_FS */
    209
    210	{}
    211};
    212
    213static struct ctl_table xfs_dir_table[] = {
    214	{
    215		.procname	= "xfs",
    216		.mode		= 0555,
    217		.child		= xfs_table
    218	},
    219	{}
    220};
    221
    222static struct ctl_table xfs_root_table[] = {
    223	{
    224		.procname	= "fs",
    225		.mode		= 0555,
    226		.child		= xfs_dir_table
    227	},
    228	{}
    229};
    230
    231int
    232xfs_sysctl_register(void)
    233{
    234	xfs_table_header = register_sysctl_table(xfs_root_table);
    235	if (!xfs_table_header)
    236		return -ENOMEM;
    237	return 0;
    238}
    239
    240void
    241xfs_sysctl_unregister(void)
    242{
    243	unregister_sysctl_table(xfs_table_header);
    244}