LCOV - code coverage report
Current view: top level - fs/xfs - xfs_sysctl.c (source / functions) Hit Total Coverage
Test: fstests of 6.5.0-rc3-djwx @ Mon Jul 31 20:08:22 PDT 2023 Lines: 10 25 40.0 %
Date: 2023-07-31 20:08:22 Functions: 3 5 60.0 %

          Line data    Source code
       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             : 
       9             : static struct ctl_table_header *xfs_table_header;
      10             : 
      11             : #ifdef CONFIG_PROC_FS
      12             : STATIC int
      13           0 : xfs_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           0 :         int             ret, *valp = ctl->data;
      21             : 
      22           0 :         ret = proc_dointvec_minmax(ctl, write, buffer, lenp, ppos);
      23             : 
      24           0 :         if (!ret && write && *valp) {
      25           0 :                 xfs_stats_clearall(xfsstats.xs_stats);
      26           0 :                 xfs_stats_clear = 0;
      27             :         }
      28             : 
      29           0 :         return ret;
      30             : }
      31             : 
      32             : STATIC int
      33           0 : xfs_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           0 :         int             ret, *valp = ctl->data;
      41             : 
      42           0 :         ret = proc_dointvec_minmax(ctl, write, buffer, lenp, ppos);
      43           0 :         if (!ret && write) {
      44           0 :                 xfs_panic_mask = *valp;
      45             : #ifdef DEBUG
      46           0 :                 xfs_panic_mask |= (XFS_PTAG_SHUTDOWN_CORRUPT | XFS_PTAG_LOGRES);
      47             : #endif
      48             :         }
      49           0 :         return ret;
      50             : }
      51             : #endif /* CONFIG_PROC_FS */
      52             : 
      53             : STATIC int
      54         193 : xfs_deprecated_dointvec_minmax(
      55             :         struct ctl_table        *ctl,
      56             :         int                     write,
      57             :         void                    *buffer,
      58             :         size_t                  *lenp,
      59             :         loff_t                  *ppos)
      60             : {
      61         193 :         if (write) {
      62          30 :                 printk_ratelimited(KERN_WARNING
      63             :                                 "XFS: %s sysctl option is deprecated.\n",
      64             :                                 ctl->procname);
      65             :         }
      66         193 :         return proc_dointvec_minmax(ctl, write, buffer, lenp, ppos);
      67             : }
      68             : 
      69             : static 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             : 
     213             : int
     214          50 : xfs_sysctl_register(void)
     215             : {
     216          50 :         xfs_table_header = register_sysctl("fs/xfs", xfs_table);
     217          50 :         if (!xfs_table_header)
     218           0 :                 return -ENOMEM;
     219             :         return 0;
     220             : }
     221             : 
     222             : void
     223          49 : xfs_sysctl_unregister(void)
     224             : {
     225          49 :         unregister_sysctl_table(xfs_table_header);
     226          49 : }

Generated by: LCOV version 1.14