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
  18static const int nfs_set_port_min = 0;
  19static const int nfs_set_port_max = 65535;
  20static struct ctl_table_header *nfs_callback_sysctl_table;
  21
  22static ctl_table nfs_cb_sysctls[] = {
  23#ifdef CONFIG_NFS_V4
  24        {
  25                .ctl_name = CTL_UNNUMBERED,
  26                .procname = "nfs_callback_tcpport",
  27                .data = &nfs_callback_set_tcpport,
  28                .maxlen = sizeof(int),
  29                .mode = 0644,
  30                .proc_handler = &proc_dointvec_minmax,
  31                .extra1 = (int *)&nfs_set_port_min,
  32                .extra2 = (int *)&nfs_set_port_max,
  33        },
  34        {
  35                .ctl_name = CTL_UNNUMBERED,
  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                .strategy = &sysctl_jiffies,
  42        },
  43#endif
  44        {
  45                .ctl_name       = CTL_UNNUMBERED,
  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                .strategy       = &sysctl_jiffies,
  52        },
  53        {
  54                .ctl_name       = CTL_UNNUMBERED,
  55                .procname       = "nfs_congestion_kb",
  56                .data           = &nfs_congestion_kb,
  57                .maxlen         = sizeof(nfs_congestion_kb),
  58                .mode           = 0644,
  59                .proc_handler   = &proc_dointvec,
  60        },
  61        { .ctl_name = 0 }
  62};
  63
  64static ctl_table nfs_cb_sysctl_dir[] = {
  65        {
  66                .ctl_name = CTL_UNNUMBERED,
  67                .procname = "nfs",
  68                .mode = 0555,
  69                .child = nfs_cb_sysctls,
  70        },
  71        { .ctl_name = 0 }
  72};
  73
  74static ctl_table nfs_cb_sysctl_root[] = {
  75        {
  76                .ctl_name = CTL_FS,
  77                .procname = "fs",
  78                .mode = 0555,
  79                .child = nfs_cb_sysctl_dir,
  80        },
  81        { .ctl_name = 0 }
  82};
  83
  84int nfs_register_sysctl(void)
  85{
  86        nfs_callback_sysctl_table = register_sysctl_table(nfs_cb_sysctl_root);
  87        if (nfs_callback_sysctl_table == NULL)
  88                return -ENOMEM;
  89        return 0;
  90}
  91
  92void nfs_unregister_sysctl(void)
  93{
  94        unregister_sysctl_table(nfs_callback_sysctl_table);
  95        nfs_callback_sysctl_table = NULL;
  96}
  97