Skip to content

NFSD direct I/O read

Chuck Lever linux-nfs stable 6 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v6 Latest6 patches 3 repliesIn review
  2. v56 patches 12 repliesSuperseded
  3. v44 patches 6 repliesSuperseded
Earlier versions · 3
VersionPostedPatchesRepliesStatus
v33 patches15 repliesSuperseded
v24 patches3 repliesSuperseded
v13 patches11 repliesSuperseded

Changes in v6 from the cover letter

* Rebased on what's now in v6.18-rc1
* getattr failures now properly cleaned up
* Fix patches have been moved to the front of the series

Patches in v6 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/6nfsd: fix refcount leak in nfsd_set_fh_dentry()fs/nfsd/nfsfh.c+3 -31 reply
2/6NFSD: Prevent a NULL pointer dereference in fh_getattr()fs/nfsd/nfsfh.c+1 -20 replies
3/6NFSD: Recover from vfs_getattr() failure in nfsd_file_get_dio_attrs()fs/nfsd/filecache.c+4 -12 replies
4/6NFSD: pass nfsd_file to nfsd_iter_read()fs/nfsd/nfs4xdr.c fs/nfsd/vfs.c fs/nfsd/vfs.h+9 -80 replies
5/6NFSD: Relocate the xdr_reserve_space_vec() call sitefs/nfsd/nfs4xdr.c+16 -40 replies
6/6NFSD: Implement NFSD_IO_DIRECT for NFS READfs/nfsd/debugfs.c fs/nfsd/nfsd.h fs/nfsd/trace.h +1 more+87 -00 replies

Reviews trailers per patch

5 of 6 patches have a Reviewed-by or Acked-by.

Patchtianshuo hanJeff LaytonMike SnitzerChristoph HellwigNeilBrown
1/6Reported-and-tested-by R-b
2/6R-b R-b R-b
3/6
4/6R-b R-b R-b
5/6R-b R-b
6/6R-b R-b R-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 5 reviewers.

Read the v6 thread

Cover letter [PATCH v6 0/6] NFSD direct I/O read

From: Chuck Lever <[email protected]>

The goal is to get the experimental read-side direct I/O implementation merged sooner. We are still thinking through the implications of mixing direct and buffered I/O when handling an NFS WRITE that does not meet the dio alignment requirements.

Changes since v5:
* Rebased on what's now in v6.18-rc1
* getattr failures now properly cleaned up
* Fix patches have been moved to the front of the series

Changes since v4:
* Additional Reviewed-by's; applying v5 to nfsd-testing
* Address Christoph's comments on 4/4
* Suggest a couple of clean-ups for 1/4

Changes since v3:
* Move xdr_reserve_space_vec() call to preserve the page_len value
* Note that "add STATX_DIOALIGN and STATX_DIO_READ_ALIGN ..." remains exactly the same as it was in the v3 series

Changes since v2:
* "Add array bounds-checking..." has been applied to nfsd-testing
* Add a page_len check before committing to use direct I/O

Changes since v1:
* Harden the loop that constructs the I/O bvec
* Address review comments

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.

Chuck Lever (4):
NFSD: Prevent a NULL pointer dereference in fh_getattr()
NFSD: Recover from vfs_getattr() failure in nfsd_file_get_dio_attrs()
NFSD: Relocate the xdr_reserve_space_vec() call site
NFSD: Implement NFSD_IO_DIRECT for NFS READ

Mike Snitzer (1):
NFSD: pass nfsd_file to nfsd_iter_read()

NeilBrown (1):
nfsd: fix refcount leak in nfsd_set_fh_dentry()

 fs/nfsd/debugfs.c   |  2 +
 fs/nfsd/filecache.c |  5 ++-
 fs/nfsd/nfs4xdr.c   | 28 ++++++++++----
 fs/nfsd/nfsd.h      |  1 +
 fs/nfsd/nfsfh.c     |  9 ++---
 fs/nfsd/trace.h     |  1 +
 fs/nfsd/vfs.c       | 90 +++++++++++++++++++++++++++++++++++++++++++--
 fs/nfsd/vfs.h       |  2 +-
 8 files changed, 120 insertions(+), 18 deletions(-)
Signature · 1 line
2.51.0