Hi, This patch series rebases "localio" changes that Hammerspace (and Primary Data before it) has been carrying since 2014. The reason they weren't proposed for upstream inclusion until now was the handshake for whether or not a client and server are local was brittle, for more context please see this commit from v1: https://git.kernel.org/pub/scm/linux/kernel/git/snitzer/linux.git/commit/?h=nfs-localio-for-6.11.v1&id=8069f78e10f8fa4dd6aa6ba3ad643de6f95be6f6 Aside from rebasing the original changes from a 5.15.130-stable kernel, my contribution to this series started with making the localio handshake more robust. To do so a new LOCALIO protocol extension has been added to both NFS v3 and v4. It follows the well-worn pattern established by the ACL protocol extension. These changes have proven stable against various test scenarios: 1) client and server both on localhost (for both v3 and v4.2) 2) various permutations of client and server support enablement for both local and remote client and server. 3) client on host, server within a container (for both v3 and v4.2) My container testing was in terms of podman managed containers. That said, v2 is "RFC" because it still lacks proper refcounting on nn->nfsd_serv and I need help on how others would like to see that happen given svc_get/svc_put were removed with commit 1e3577a4521e ("SUNRPC: discard sv_refcnt, and svc_get/svc_put"). * Changes since v1: lots of folding and rebasing of patches to try to minimize needless preservation of old code that later patches removed. Dropped patches that weren't needed. Some renames and comments. Some refactoring of nfsiod_start. All review and comments are welcome! Thanks, Mike Mike Snitzer (6): nfs_common: add NFS LOCALIO protocol extension enablement nfs: implement v3 and v4 client support for NFS_LOCALIO_PROGRAM nfsd: implement v3 and v4 server support for NFS_LOCALIO_PROGRAM nfs/nfsd: consolidate {encode,decode}_opaque_fixed in nfs_xdr.h nfs/localio: move managing nfsd_open_local_fh symbol to nfs_common nfs/nfsd: ensure localio server always uses its network namespace Peng Tao (1): nfs: move nfs_stat_to_errno to nfs.h Trond Myklebust (3): NFS: for localio don't call filesystem read() and write() routines directly NFS: Enable localio for non-pNFS I/O pnfs/flexfiles: Enable localio for flexfiles I/O Weston Andros Adamson (5): nfs: pass nfs_client to nfs_initiate_pgio nfs: pass descriptor thru nfs_initiate_pgio path nfs: pass struct file to nfs_init_pgio and nfs_init_commit sunrpc: add rpcauth_map_to_svc_cred_local nfs/nfsd: add "localio" support fs/Kconfig | 3 + fs/nfs/Kconfig | 25 + fs/nfs/Makefile | 2 + fs/nfs/blocklayout/blocklayout.c | 6 +- fs/nfs/client.c | 17 +- fs/nfs/filelayout/filelayout.c | 16 +- fs/nfs/flexfilelayout/flexfilelayout.c | 131 +++- fs/nfs/flexfilelayout/flexfilelayout.h | 2 + fs/nfs/flexfilelayout/flexfilelayoutdev.c | 6 + fs/nfs/inode.c | 61 +- fs/nfs/internal.h | 96 ++- fs/nfs/localio.c | 830 ++++++++++++++++++++++ fs/nfs/nfs2xdr.c | 69 -- fs/nfs/nfs3_fs.h | 1 + fs/nfs/nfs3client.c | 25 + fs/nfs/nfs3proc.c | 3 + fs/nfs/nfs3xdr.c | 58 ++ fs/nfs/nfs4_fs.h | 2 + fs/nfs/nfs4client.c | 23 + fs/nfs/nfs4proc.c | 3 + fs/nfs/nfs4xdr.c | 65 +- fs/nfs/nfstrace.h | 61 ++ fs/nfs/pagelist.c | 32 +- fs/nfs/pnfs.c | 24 +- fs/nfs/pnfs.h | 6 +- fs/nfs/pnfs_nfs.c | 2 +- fs/nfs/write.c | 13 +- fs/nfs_common/Makefile | 3 + fs/nfs_common/nfslocalio.c | 71 ++ fs/nfsd/Kconfig | 25 + fs/nfsd/Makefile | 2 + fs/nfsd/filecache.c | 2 +- fs/nfsd/localio.c | 330 +++++++++ fs/nfsd/netns.h | 4 + fs/nfsd/nfsd.h | 11 + fs/nfsd/nfssvc.c | 93 ++- fs/nfsd/trace.h | 3 +- fs/nfsd/vfs.h | 9 + fs/nfsd/xdr.h | 6 + include/linux/nfs.h | 65 ++ include/linux/nfs_fs.h | 2 + include/linux/nfs_fs_sb.h | 9 + include/linux/nfs_xdr.h | 31 +- include/linux/nfslocalio.h | 39 + include/linux/sunrpc/auth.h | 4 + include/uapi/linux/nfs.h | 4 + net/sunrpc/auth.c | 17 + 47 files changed, 2146 insertions(+), 166 deletions(-) create mode 100644 fs/nfs/localio.c create mode 100644 fs/nfs_common/nfslocalio.c create mode 100644 fs/nfsd/localio.c create mode 100644 include/linux/nfslocalio.h -- 2.44.0