From: Chuck Lever <chuck.lever@xxxxxxxxxx> This series replaces patches 1, 2, and 5 in Mike's v9 series: https://lore.kernel.org/linux-nfs/20250903205121.41380-1-snitzer@xxxxxxxxxx/T/#t Changes from Mike's v9: * The LOC introduced by the feature has been reduced considerably. * A new trace point in nfsd_file_getattr reports each file's dio alignment parameters when it is opened. * The direct I/O path has been taken out-of-line so that it may continue to be modified and optimized without perturbing the more commonly used I/O paths. * When an exported file system does not implement direct I/O, more commonly used modes are employed instead to avoid returning EOPNOTSUPP unexpectedly. * When NFSD_IO_DIRECT is selected, NFS READs of all sizes use direct I/O to provide better experimental data about small I/O workloads. I haven't found any issues with NFSv3, NFSv4.0, and NFSv4.1 tested on TCP and RDMA while /sys/kernel/debug/nfsd/io_cache_read is set to 2. Trace points confirm that NFSD is using direct I/O. The goal is to get the experimental read-side direct I/O implementation merged sooner, as the write side has a few gray areas that still need discussion and resolution. Chuck Lever (1): NFSD: Implement NFSD_IO_DIRECT for NFS READ Mike Snitzer (2): NFSD: filecache: add STATX_DIOALIGN and STATX_DIO_READ_ALIGN support NFSD: pass nfsd_file to nfsd_iter_read() fs/nfsd/debugfs.c | 2 + fs/nfsd/filecache.c | 34 +++++++++++++++++ fs/nfsd/filecache.h | 4 ++ fs/nfsd/nfs4xdr.c | 8 ++-- fs/nfsd/nfsd.h | 1 + fs/nfsd/nfsfh.c | 4 ++ fs/nfsd/trace.h | 28 ++++++++++++++ fs/nfsd/vfs.c | 85 +++++++++++++++++++++++++++++++++++++++-- fs/nfsd/vfs.h | 2 +- include/trace/misc/fs.h | 22 +++++++++++ 10 files changed, 182 insertions(+), 8 deletions(-) -- 2.50.0