On Thu, Sep 05, 2024 at 03:24:06PM -0400, Anna Schumaker wrote: > On Sat, Aug 31, 2024 at 6:38 PM Mike Snitzer <snitzer@xxxxxxxxxx> wrote: > > > > fs/nfs_common/nfslocalio.c provides interfaces that enable an NFS > > client to generate a nonce (single-use UUID) and associated > > short-lived nfs_uuid_t struct, register it with nfs_common for > > subsequent lookup and verification by the NFS server and if matched > > the NFS server populates members in the nfs_uuid_t struct. > > > > nfs_common's nfs_uuids list is the basis for localio enablement, as > > such it has members that point to nfsd memory for direct use by the > > client (e.g. 'net' is the server's network namespace, through it the > > client can access nn->nfsd_serv). > > > > This commit also provides the base nfs_uuid_t interfaces to allow > > proper net namespace refcounting for the LOCALIO use case. > > > > CONFIG_NFS_LOCALIO controls the nfs_common, NFS server and NFS client > > enablement for LOCALIO. If both NFS_FS=m and NFSD=m then > > NFS_COMMON_LOCALIO_SUPPORT=m and nfs_localio.ko is built (and provides > > nfs_common's LOCALIO support). > > > > # lsmod | grep nfs_localio > > nfs_localio 12288 2 nfsd,nfs > > sunrpc 745472 35 nfs_localio,nfsd,auth_rpcgss,lockd,nfsv3,nfs > > > > Signed-off-by: Mike Snitzer <snitzer@xxxxxxxxxx> > > Co-developed-by: NeilBrown <neilb@xxxxxxx> > > Signed-off-by: NeilBrown <neilb@xxxxxxx> > > --- > > fs/Kconfig | 23 ++++++++ > > fs/nfs_common/Makefile | 3 + > > fs/nfs_common/nfslocalio.c | 116 +++++++++++++++++++++++++++++++++++++ > > include/linux/nfslocalio.h | 36 ++++++++++++ > > 4 files changed, 178 insertions(+) > > create mode 100644 fs/nfs_common/nfslocalio.c > > create mode 100644 include/linux/nfslocalio.h > > > > diff --git a/fs/Kconfig b/fs/Kconfig > > index a46b0cbc4d8f..24d4e4b419d1 100644 > > --- a/fs/Kconfig > > +++ b/fs/Kconfig > > @@ -382,6 +382,29 @@ config NFS_COMMON > > depends on NFSD || NFS_FS || LOCKD > > default y > > > > +config NFS_COMMON_LOCALIO_SUPPORT > > + tristate > > + default n > > + default y if NFSD=y || NFS_FS=y > > + default m if NFSD=m && NFS_FS=m > > + select SUNRPC > > + > > +config NFS_LOCALIO > > + bool "NFS client and server support for LOCALIO auxiliary protocol" > > + depends on NFSD && NFS_FS > > + select NFS_COMMON_LOCALIO_SUPPORT > > + default n > > + help > > + Some NFS servers support an auxiliary NFS LOCALIO protocol > > + that is not an official part of the NFS protocol. > > + > > + This option enables support for the LOCALIO protocol in the > > + kernel's NFS server and client. Enable this to permit local > > + NFS clients to bypass the network when issuing reads and > > + writes to the local NFS server. > > + > > + If unsure, say N. > > + > > I'm wondering if it would make sense to create a fs/nfs_common/Kconfig > file at some point (not as part of this patchset!) to hold this group > of nfs_common options and to tidy up this section of the fs/Kconfig > file. > > Thoughts? > Anna Yes, I think that makes sense. Mike