On Sat, 2024-08-31 at 18:37 -0400, Mike Snitzer wrote: > Hi, > > Happy Labor Day weekend (US holiday on Monday)! Seems apropos to send > what I hope the final LOCALIO patchset this weekend: its my birthday > this coming Tuesday, so _if_ LOCALIO were to get merged for 6.12 > inclusion sometime next week: best b-day gift in a while! ;) > > Anyway, I've been busy incorporating all the review feedback from v14 > _and_ working closely with NeilBrown to address some lingering net-ns > refcounting and nfsd modules refcounting issues, and more (Chnagelog > below): > > git diff snitzer/nfs-localio-for-next.v14 snitzer/nfs-localio-for-next.v15 | diffstat > Documentation/filesystems/nfs/localio.rst | 106 +++++++++-- > fs/Kconfig | 26 ++ > fs/nfs/Kconfig | 16 - > fs/nfs/client.c | 4 > fs/nfs/flexfilelayout/flexfilelayout.c | 8 > fs/nfs/internal.h | 24 +- > fs/nfs/localio.c | 92 +++------ > fs/nfs/pagelist.c | 4 > fs/nfs/write.c | 4 > fs/nfs_common/nfslocalio.c | 287 +++++++++++------------------- > fs/nfsd/Kconfig | 16 - > fs/nfsd/Makefile | 2 > fs/nfsd/filecache.c | 27 +- > fs/nfsd/filecache.h | 1 > fs/nfsd/localio.c | 79 ++++---- > fs/nfsd/netns.h | 4 > fs/nfsd/nfsctl.c | 25 ++ > fs/nfsd/nfsd.h | 2 > fs/nfsd/nfsfh.c | 3 > fs/nfsd/nfssvc.c | 11 - > fs/nfsd/vfs.h | 5 > include/linux/nfs.h | 2 > include/linux/nfs_fs_sb.h | 3 > include/linux/nfslocalio.h | 64 +++--- > 24 files changed, 410 insertions(+), 405 deletions(-) > > These latest changes are available in my git tree here: > https://git.kernel.org/pub/scm/linux/kernel/git/snitzer/linux.git/log/?h=nfs-localio-for-next > > Chuck and Jeff, 2 patches have respective Not-Acked-by and > Not-Reviewed-by as placeholders because there were enough changes in > v15 that you'll need to revalidate your provided tags: > [PATCH v15 16/26] nfsd: add LOCALIO support > [PATCH v15 17/26] nfsd: implement server support for NFS_LOCALIO_PROGRAM > > Otherwise, I did add the tags you provided from your review of v14. > Hopefully I didn't miss any. > > Changes since v14 (Thursday): > > - Reviewed, tested, fixed and incorporated NeilBrown's really nice > solution for addressing net-ns refcounting issues he identified > (first I didn't have adequate protection on net-ns then I had too > heavy), see Neil's 6 replacement patches: > https://marc.info/?l=linux-nfs&m=172498546024767&w=2 > > - Reviewed, tested and incorporated NeilBrown's __module_get > improvements that build on his net-ns changes, see: > https://marc.info/?l=linux-nfs&m=172499598828454&w=2 > > - Added NeilBrown to the Copyright headers of 4 LOCALIO source files, > warranted thanks to his contributions. > > - Switched back from using 'struct nfs_localio_ctx' to 'struct > nfsd_file' thanks to NeilBrown's suggestion, much cleaner: > https://marc.info/?l=linux-nfs&m=172499732628938&w=2 > - added nfsd_file_put_local() to achieve this. > > - Cleaned up and refactored nfsd_open_local_fh(). > > - Removed the more elaborate symbol_request()+symbol_put() code from > nfs_common/nfslocalio.c in favor of having init_nfsd() copy its > nfsd_localio_operations table to 'nfs_to'. > > - Fixed the Kconfig to only need a single CONFIG_NFS_LOCALIO (which > still selects NFS_COMMON_LOCALIO_SUPPORT to control how to build > nfs_common's nfs_local enablement, support nfs_localio.ko). > > - Verified all commits are bisect-clean both with and without > CONFIG_NFS_LOCALIO set. > - required adding some missing #if IS_ENABLED(CONFIG_NFS_LOCALIO) > > - Added various Reviewed-by and Acked-by tags from Chuck and Jeff. > But again, left Not-<tag> placeholders in nfsd patches 16 and 17. > > - Reviwed and updated all patch headers as needed to reflect the above > changes. > > - Updated localio.rst to reflect all changes above and improved > readability after another pass of proofreading. > > - Added FAQ 8 to localio.rst (Chuck's question and Neil's answer about > export options and LOCALIO. > > - Moved verbose patch header content about the 2 major interlocking > strategies used in LOCALIO to a new "NFS Client and Server > Interlock" section in localio.rst (tied it to a new FAQ 9). > > All review appreciated, thanks! > Mike > > Chuck Lever (2): > NFSD: Avoid using rqstp->rq_vers in nfsd_set_fh_dentry() > NFSD: Short-circuit fh_verify tracepoints for LOCALIO > > Mike Snitzer (12): > nfs_common: factor out nfs_errtbl and nfs_stat_to_errno > nfs_common: factor out nfs4_errtbl and nfs4_stat_to_errno > nfs: factor out {encode,decode}_opaque_fixed to nfs_xdr.h > nfsd: add nfsd_serv_try_get and nfsd_serv_put > SUNRPC: remove call_allocate() BUG_ONs > nfs_common: add NFS LOCALIO auxiliary protocol enablement > nfs_common: prepare for the NFS client to use nfsd_file for LOCALIO > nfsd: implement server support for NFS_LOCALIO_PROGRAM > nfs: pass struct nfsd_file to nfs_init_pgio and nfs_init_commit > nfs: implement client support for NFS_LOCALIO_PROGRAM > nfs: add Documentation/filesystems/nfs/localio.rst > nfs: add "NFS Client and Server Interlock" section to localio.rst > > NeilBrown (5): > NFSD: Handle @rqstp == NULL in check_nfsd_access() > NFSD: Refactor nfsd_setuser_and_check_port() > nfsd: factor out __fh_verify to allow NULL rqstp to be passed > nfsd: add nfsd_file_acquire_local() > SUNRPC: replace program list with program array > > Trond Myklebust (4): > nfs: enable localio for non-pNFS IO > pnfs/flexfiles: enable localio support > nfs/localio: use dedicated workqueues for filesystem read and write > nfs: add FAQ section to Documentation/filesystems/nfs/localio.rst > > Weston Andros Adamson (3): > SUNRPC: add svcauth_map_clnt_to_svc_cred_local > nfsd: add LOCALIO support > nfs: add LOCALIO support > > Documentation/filesystems/nfs/localio.rst | 357 ++++++++++ > fs/Kconfig | 23 + > fs/nfs/Kconfig | 1 + > fs/nfs/Makefile | 1 + > fs/nfs/client.c | 15 +- > fs/nfs/filelayout/filelayout.c | 6 +- > fs/nfs/flexfilelayout/flexfilelayout.c | 56 +- > fs/nfs/flexfilelayout/flexfilelayoutdev.c | 6 + > fs/nfs/inode.c | 57 +- > fs/nfs/internal.h | 53 +- > fs/nfs/localio.c | 757 ++++++++++++++++++++++ > fs/nfs/nfs2xdr.c | 70 +- > fs/nfs/nfs3xdr.c | 108 +-- > fs/nfs/nfs4xdr.c | 84 +-- > fs/nfs/nfstrace.h | 61 ++ > fs/nfs/pagelist.c | 16 +- > fs/nfs/pnfs_nfs.c | 2 +- > fs/nfs/write.c | 12 +- > fs/nfs_common/Makefile | 5 + > fs/nfs_common/common.c | 134 ++++ > fs/nfs_common/nfslocalio.c | 162 +++++ > fs/nfsd/Kconfig | 1 + > fs/nfsd/Makefile | 1 + > fs/nfsd/export.c | 30 +- > fs/nfsd/filecache.c | 103 ++- > fs/nfsd/filecache.h | 5 + > fs/nfsd/localio.c | 189 ++++++ > fs/nfsd/netns.h | 12 +- > fs/nfsd/nfsctl.c | 27 +- > fs/nfsd/nfsd.h | 6 +- > fs/nfsd/nfsfh.c | 137 ++-- > fs/nfsd/nfsfh.h | 2 + > fs/nfsd/nfssvc.c | 102 ++- > fs/nfsd/trace.h | 21 +- > fs/nfsd/vfs.h | 2 + > include/linux/nfs.h | 9 + > include/linux/nfs_common.h | 17 + > include/linux/nfs_fs_sb.h | 9 + > include/linux/nfs_xdr.h | 20 +- > include/linux/nfslocalio.h | 79 +++ > include/linux/sunrpc/svc.h | 7 +- > include/linux/sunrpc/svcauth.h | 5 + > net/sunrpc/clnt.c | 6 - > net/sunrpc/svc.c | 68 +- > net/sunrpc/svc_xprt.c | 2 +- > net/sunrpc/svcauth.c | 28 + > net/sunrpc/svcauth_unix.c | 3 +- > 47 files changed, 2468 insertions(+), 409 deletions(-) > create mode 100644 Documentation/filesystems/nfs/localio.rst > create mode 100644 fs/nfs/localio.c > create mode 100644 fs/nfs_common/common.c > create mode 100644 fs/nfs_common/nfslocalio.c > create mode 100644 fs/nfsd/localio.c > create mode 100644 include/linux/nfs_common.h > create mode 100644 include/linux/nfslocalio.h > This all looks pretty good to me now too. There are some small issues, but they should be easy to fix up. You can add this to the rest of the series. Nice work! Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx>