Hi, NFS and LOCALIO in particular benefit from avoiding the page cache for workloads that have a working set that is significantly larger than available system memory. Enter: NFS DIRECT, which makes it possible to always enable LOCALIO to use O_DIRECT even if the IO is not DIO-aligned. Changes since v5: - I split the NFS changes back out for v6 since the NFSD DIRECT changes have started to land in nfsd-testing - With the benefit of having updated the NFSD trace points to use an EVENT_CLASS I have now updated NFS's equivalents to also use one. - Updated patch headers. - Patches 4 and 5, while not strictly needed, are "nice to have" because they evolve the NFS LOCALIO code to a better place. All review appreciated, thanks. Mike Mike Snitzer (7): nfs/localio: avoid bouncing LOCALIO if nfs_client_is_local() nfs/localio: make trace_nfs_local_open_fh more useful nfs/localio: add nfsd_file_dio_alignment nfs/localio: refactor iocb initialization nfs/localio: fallback to NFSD for misaligned O_DIRECT READs nfs/direct: add misaligned READ handling nfs/direct: add misaligned WRITE handling fs/nfs/direct.c | 258 ++++++++++++++++++++++++++++++++++--- fs/nfs/internal.h | 17 ++- fs/nfs/localio.c | 230 +++++++++++++++++++++------------ fs/nfs/nfstrace.h | 64 ++++++++- fs/nfs/pagelist.c | 22 +++- fs/nfsd/localio.c | 11 ++ include/linux/nfs_page.h | 1 + include/linux/nfslocalio.h | 2 + 8 files changed, 496 insertions(+), 109 deletions(-) -- 2.44.0