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        {
  36                .procname = "idmap_cache_timeout",
  37                .data = &nfs_idmap_cache_timeout,
  38                .maxlen = sizeof(int),
  39                .mode = 0644,
  40                .proc_handler = proc_dointvec_jiffies,
  41        },
  42#endif
  43        {
  44                .procname       = "nfs_mountpoint_timeout",
  45                .data           = &nfs_mountpoint_expiry_timeout,
  46                .maxlen         = sizeof(nfs_mountpoint_expiry_timeout),
  47                .mode           = 0644,
  48                .proc_handler   = proc_dointvec_jiffies,
  49        },
  50        {
  51                .procname       = "nfs_congestion_kb",
  52                .data           = &nfs_congestion_kb,
  53                .maxlen         = sizeof(nfs_congestion_kb),
  54                .mode           = 0644,
  55                .proc_handler   = proc_dointvec,
  56        },
  57        { }
  58};
  59
  60static ctl_table nfs_cb_sysctl_dir[] = {
  61        {
  62                .procname = "nfs",
  63                .mode = 0555,
  64                .child = nfs_cb_sysctls,
  65        },
  66        { }
  67};
  68
  69static ctl_table nfs_cb_sysctl_root[] = {
  70        {
  71                .procname = "fs",
  72                .mode = 0555,
  73                .child = nfs_cb_sysctl_dir,
  74        },
  75        { }
  76};
  77
  78int nfs_register_sysctl(void)
  79{
  80        nfs_callback_sysctl_table = register_sysctl_table(nfs_cb_sysctl_root);
  81        if (nfs_callback_sysctl_table == NULL)
  82                return -ENOMEM;
  83        return 0;
  84}
  85
  86void nfs_unregister_sysctl(void)
  87{
  88        unregister_sysctl_table(nfs_callback_sysctl_table);
  89        nfs_callback_sysctl_table = NULL;
  90}
  91