Commit 9fe5ea76 authored by Chuck Lever's avatar Chuck Lever
Browse files

NFSD: Add /sys/kernel/debug/nfsd



Create a small sandbox under /sys/kernel/debug for experimental NFS
server feature settings. There is no API/ABI compatibility guarantee
for these settings.

The only documentation for such settings, if any documentation exists,
is in the kernel source code.

Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
parent f7fb730c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ nfsd-$(CONFIG_NFSD_BLOCKLAYOUT) += blocklayout.o blocklayoutxdr.o
nfsd-$(CONFIG_NFSD_SCSILAYOUT) += blocklayout.o blocklayoutxdr.o
nfsd-$(CONFIG_NFSD_FLEXFILELAYOUT) += flexfilelayout.o flexfilelayoutxdr.o
nfsd-$(CONFIG_NFS_LOCALIO) += localio.o
nfsd-$(CONFIG_DEBUG_FS) += debugfs.o


.PHONY: xdrgen

fs/nfsd/debugfs.c

0 → 100644
+18 −0
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0

#include <linux/debugfs.h>

#include "nfsd.h"

static struct dentry *nfsd_top_dir __read_mostly;

void nfsd_debugfs_exit(void)
{
	debugfs_remove_recursive(nfsd_top_dir);
	nfsd_top_dir = NULL;
}

void nfsd_debugfs_init(void)
{
	nfsd_top_dir = debugfs_create_dir("nfsd", NULL);
}
+4 −0
Original line number Diff line number Diff line
@@ -2281,6 +2281,8 @@ static int __init init_nfsd(void)
{
	int retval;

	nfsd_debugfs_init();

	retval = nfsd4_init_slabs();
	if (retval)
		return retval;
@@ -2329,6 +2331,7 @@ static int __init init_nfsd(void)
	nfsd4_exit_pnfs();
out_free_slabs:
	nfsd4_free_slabs();
	nfsd_debugfs_exit();
	return retval;
}

@@ -2345,6 +2348,7 @@ static void __exit exit_nfsd(void)
	nfsd_lockd_shutdown();
	nfsd4_free_slabs();
	nfsd4_exit_pnfs();
	nfsd_debugfs_exit();
}

MODULE_AUTHOR("Olaf Kirch <okir@monad.swb.de>");
+8 −0
Original line number Diff line number Diff line
@@ -156,6 +156,14 @@ void nfsd_reset_versions(struct nfsd_net *nn);
int nfsd_create_serv(struct net *net);
void nfsd_destroy_serv(struct net *net);

#ifdef CONFIG_DEBUG_FS
void nfsd_debugfs_init(void);
void nfsd_debugfs_exit(void);
#else
static inline void nfsd_debugfs_init(void) {}
static inline void nfsd_debugfs_exit(void) {}
#endif

extern int nfsd_max_blksize;

static inline int nfsd_v4client(struct svc_rqst *rq)