linux/fs/nfs/sysctl.c
<<
>>
Prefs
   1/*
   2 * linux/fs/nfs/sysctl.c
   3 *
   4 * Sysctl interface to NFS parameters
   5 */
   6#include <linux/types.h>
   7#include <linux/linkage.h>
   8#include <linux/ctype.h>
   9#include <linux/fs.h>
  10#include <linux/sysctl.h>
  11#include <linux/module.h>
  12#include <linux/nfs4.h>
  13#include <linux/nfs_idmap.h>
  14#include <linux/nfs_fs.h>
  15
  16#include "callback.h"
  17
  18#ifdef CONFIG_NFS_V4
  19static const int nfs_set_port_min = 0;
  20static const int nfs_set_port_max = 65535;
  21#endif
  22static struct ctl_table_header *nfs_callback_sysctl_table;
  23
  24static ctl_table nfs_cb_sysctls[] = {
  25#ifdef CONFIG_NFS_V4
  26        {
  27                .procname = "nfs_callback_tcpport",
  28                .data = &nfs_callback_set_tcpport,
  29                .maxlen = sizeof(int),
  30                .mode = 0644,
  31                .proc_handler = proc_dointvec_minmax,
  32                .extra1 = (int *)&nfs_set_port_min,
  33                .extra2 = (int *)&nfs_set_port_max,
  34        },
  35#ifndef CONFIG_NFS_USE_NEW_IDMAPPER
  36        {
  37                .procname = "idmap_cache_timeout",
  38                .data = &nfs_idmap_cache_timeout,
  39                .maxlen = sizeof(int),
  40                .mode = 0644,
  41                .proc_handler = proc_dointvec_jiffies,
  42        },
  43#endif /* CONFIG_NFS_USE_NEW_IDMAPPER */
  44#endif
  45        {
  46                .procname       = "nfs_mountpoint_timeout",
  47                .data           = &nfs_mountpoint_expiry_timeout,
  48                .maxlen         = sizeof(nfs_mountpoint_expiry_timeout),
  49                .mode           = 0644,
  50                .proc_handler   = proc_dointvec_jiffies,
  51        },
  52        {
  53                .procname       = "nfs_congestion_kb",
  54                .data           = &nfs_congestion_kb,
  55                .maxlen         = sizeof(nfs_congestion_kb),
  56                .mode           = 0644,
  57                .proc_handler   = proc_dointvec,
  58        },
  59        { }
  60};
  61
  62static ctl_table nfs_cb_sysctl_dir[] = {
  63        {
  64                .procname = "nfs",
  65                .mode = 0555,
  66                .child = nfs_cb_sysctls,
  67        },
  68        { }
  69};
  70
  71static ctl_table nfs_cb_sysctl_root[] = {
  72        {
  73                .procname = "fs",
  74                .mode = 0555,
  75                .child = nfs_cb_sysctl_dir,
  76        },
  77        { }
  78};
  79
  80int nfs_register_sysctl(void)
  81{
  82        nfs_callback_sysctl_table = register_sysctl_table(nfs_cb_sysctl_root);
  83        if (nfs_callback_sysctl_table == NULL)
  84                return -ENOMEM;
  85        return 0;
  86}
  87
  88void nfs_unregister_sysctl(void)
  89{
  90        unregister_sysctl_table(nfs_callback_sysctl_table);
  91        nfs_callback_sysctl_table = NULL;
  92}
  93