root/fs/nfs/sysctl.c
// SPDX-License-Identifier: GPL-2.0
/*
 * linux/fs/nfs/sysctl.c
 *
 * Sysctl interface to NFS parameters
 */
#include <linux/types.h>
#include <linux/linkage.h>
#include <linux/ctype.h>
#include <linux/fs.h>
#include <linux/sysctl.h>
#include <linux/module.h>
#include <linux/nfs_fs.h>

static struct ctl_table_header *nfs_callback_sysctl_table;

static const struct ctl_table nfs_cb_sysctls[] = {
        {
                .procname       = "nfs_mountpoint_timeout",
                .data           = &nfs_mountpoint_expiry_timeout,
                .maxlen         = sizeof(nfs_mountpoint_expiry_timeout),
                .mode           = 0644,
                .proc_handler   = proc_dointvec_jiffies,
        },
        {
                .procname       = "nfs_congestion_kb",
                .data           = &nfs_congestion_kb,
                .maxlen         = sizeof(nfs_congestion_kb),
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
};

int nfs_register_sysctl(void)
{
        nfs_callback_sysctl_table = register_sysctl("fs/nfs", nfs_cb_sysctls);
        if (nfs_callback_sysctl_table == NULL)
                return -ENOMEM;
        return 0;
}

void nfs_unregister_sysctl(void)
{
        unregister_sysctl_table(nfs_callback_sysctl_table);
        nfs_callback_sysctl_table = NULL;
}