summaryrefslogtreecommitdiff
path: root/fs/nfsd/debugfs.c
diff options
context:
space:
mode:
authorMike Snitzer <snitzer@kernel.org>2025-11-11 09:59:31 -0500
committerChuck Lever <chuck.lever@oracle.com>2025-12-01 09:57:10 -0500
commit06c5c97293e3fca99ce15da157068edf45a7c6e4 (patch)
tree1493d0a45a2cc0077914c18d91b9027c2537f43e /fs/nfsd/debugfs.c
parente3e8e176ca4876e6212582022ad80835dddc9de4 (diff)
NFSD: Implement NFSD_IO_DIRECT for NFS WRITE
When NFSD_IO_DIRECT is selected via the /sys/kernel/debug/nfsd/io_cache_write experimental tunable, split incoming unaligned NFS WRITE requests into a prefix, middle and suffix segment, as needed. The middle segment is now DIO-aligned and the prefix and/or suffix are unaligned. Synchronous buffered IO is used for the unaligned segments, and IOCB_DIRECT is used for the middle DIO-aligned extent. Although IOCB_DIRECT avoids the use of the page cache, by itself it doesn't guarantee data durability. For UNSTABLE WRITE requests, durability is obtained by a subsequent NFS COMMIT request. Signed-off-by: Mike Snitzer <snitzer@kernel.org> Co-developed-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'fs/nfsd/debugfs.c')
-rw-r--r--fs/nfsd/debugfs.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/nfsd/debugfs.c b/fs/nfsd/debugfs.c
index 00eb1ecef6ac..7f44689e0a53 100644
--- a/fs/nfsd/debugfs.c
+++ b/fs/nfsd/debugfs.c
@@ -108,6 +108,7 @@ static int nfsd_io_cache_write_set(void *data, u64 val)
switch (val) {
case NFSD_IO_BUFFERED:
case NFSD_IO_DONTCACHE:
+ case NFSD_IO_DIRECT:
nfsd_io_cache_write = val;
break;
default: