Hi, The v1 thread had quite a bit of discussion, and here are some highlights worth reading to provide background: jeff's summary: https://lore.kernel.org/linux-nfs/b1accdad470f19614f9d3865bb3a4c69958e5800.camel@xxxxxxxxxx/ performance: https://lore.kernel.org/linux-nfs/aEslwqa9iMeZjjlV@xxxxxxxxxx/ Changes since v1: - Rebased ontop of Chuck's proposed fh_getattr movement (Chuck, I like it so went with it). - NFSD's expanding of misaligned READ DIO to be DIO-aligned that resulted in 'start_extra' blocks being read into associated pages caused incorrect data to be returned from NFSD. This was caught using the 'dt' utility. See patch 8 for more details. - This v2 patchset has been tested pretty extensively now. I haven't time to explore Christoph's pagecache idea like I hoped: https://lore.kernel.org/linux-nfs/aEqEQLumUp8Y7JR5@xxxxxxxxxxxxx/ Any help with hardening against page cache invalidation problems due to mixing O_DIRECT and buffered IO appreciated. ;) Thanks, Mike ps. I have a LOCALIO patchset that I'll be posting next that benefits from this NFSD patchset. Chuck Lever (2): NFSD: Relocate the fh_want_write() and fh_drop_write() helpers NFSD: Move the fh_getattr() helper Mike Snitzer (6): NFSD: filecache: add STATX_DIOALIGN and STATX_DIO_READ_ALIGN support lib/iov_iter: remove piecewise bvec length checking in iov_iter_aligned_bvec NFSD: pass nfsd_file to nfsd_iter_read() NFSD: add io_cache_read controls to debugfs interface NFSD: add io_cache_write controls to debugfs interface NFSD: issue READs using O_DIRECT even if IO is misaligned fs/nfsd/debugfs.c | 94 ++++++++++++++++++++++ fs/nfsd/filecache.c | 32 ++++++++ fs/nfsd/filecache.h | 4 + fs/nfsd/nfs4xdr.c | 8 +- fs/nfsd/nfsd.h | 9 +++ fs/nfsd/nfsfh.c | 27 +++++++ fs/nfsd/nfsfh.h | 38 +++++++++ fs/nfsd/trace.h | 37 +++++++++ fs/nfsd/vfs.c | 154 ++++++++++++++++++++++++++++++++++--- fs/nfsd/vfs.h | 35 +-------- include/linux/sunrpc/svc.h | 5 +- lib/iov_iter.c | 5 +- 12 files changed, 395 insertions(+), 53 deletions(-) -- 2.44.0