fs/nfsd/debugfs.c
Source file repositories/reference/linux-study-clean/fs/nfsd/debugfs.c
File Facts
- System
- Linux kernel
- Corpus path
fs/nfsd/debugfs.c- Extension
.c- Size
- 3225 bytes
- Lines
- 148
- Domain
- Core OS
- Bucket
- VFS And Filesystem Core
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/debugfs.hnfsd.h
Detected Declarations
function zerofunction nfsd_dsr_setfunction nfsd_io_cache_read_getfunction nfsd_io_cache_read_setfunction nfsd_io_cache_write_getfunction nfsd_io_cache_write_setfunction nfsd_debugfs_exitfunction nfsd_debugfs_init
Annotated Snippet
// SPDX-License-Identifier: GPL-2.0
#include <linux/debugfs.h>
#include "nfsd.h"
static struct dentry *nfsd_top_dir __read_mostly;
/*
* /sys/kernel/debug/nfsd/disable-splice-read
*
* Contents:
* %0: NFS READ is allowed to use page splicing
* %1: NFS READ uses only iov iter read
*
* The default value of this setting is zero (page splicing is
* allowed). This setting takes immediate effect for all NFS
* versions, all exports, and in all NFSD net namespaces.
*/
static int nfsd_dsr_get(void *data, u64 *val)
{
*val = nfsd_disable_splice_read ? 1 : 0;
return 0;
}
static int nfsd_dsr_set(void *data, u64 val)
{
nfsd_disable_splice_read = (val > 0);
if (!nfsd_disable_splice_read) {
/*
* Must use buffered I/O if splice_read is enabled.
*/
nfsd_io_cache_read = NFSD_IO_BUFFERED;
}
return 0;
}
DEFINE_DEBUGFS_ATTRIBUTE(nfsd_dsr_fops, nfsd_dsr_get, nfsd_dsr_set, "%llu\n");
/*
* /sys/kernel/debug/nfsd/io_cache_read
*
* Contents:
* %0: NFS READ will use buffered IO
* %1: NFS READ will use dontcache (buffered IO w/ dropbehind)
* %2: NFS READ will use direct IO
*
* This setting takes immediate effect for all NFS versions,
* all exports, and in all NFSD net namespaces.
*/
static int nfsd_io_cache_read_get(void *data, u64 *val)
{
*val = nfsd_io_cache_read;
return 0;
}
static int nfsd_io_cache_read_set(void *data, u64 val)
{
int ret = 0;
switch (val) {
case NFSD_IO_BUFFERED:
nfsd_io_cache_read = NFSD_IO_BUFFERED;
break;
case NFSD_IO_DONTCACHE:
case NFSD_IO_DIRECT:
/*
* Must disable splice_read when enabling
* NFSD_IO_DONTCACHE.
*/
nfsd_disable_splice_read = true;
nfsd_io_cache_read = val;
break;
default:
ret = -EINVAL;
break;
}
return ret;
}
DEFINE_DEBUGFS_ATTRIBUTE(nfsd_io_cache_read_fops, nfsd_io_cache_read_get,
nfsd_io_cache_read_set, "%llu\n");
/*
* /sys/kernel/debug/nfsd/io_cache_write
*
* Contents:
Annotation
- Immediate include surface: `linux/debugfs.h`, `nfsd.h`.
- Detected declarations: `function zero`, `function nfsd_dsr_set`, `function nfsd_io_cache_read_get`, `function nfsd_io_cache_read_set`, `function nfsd_io_cache_write_get`, `function nfsd_io_cache_write_set`, `function nfsd_debugfs_exit`, `function nfsd_debugfs_init`.
- Atlas domain: Core OS / VFS And Filesystem Core.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.