From: Mike Snitzer <snitzer@kernel.org>
To: linux-nfs@vger.kernel.org
Cc: Jeff Layton <jlayton@kernel.org>,
Chuck Lever <chuck.lever@oracle.com>,
Anna Schumaker <anna@kernel.org>,
Trond Myklebust <trondmy@hammerspace.com>,
NeilBrown <neilb@suse.de>
Subject: [PATCH v16 00/26] nfs/nfsd: add support for LOCALIO
Date: Thu, 5 Sep 2024 15:09:34 -0400 [thread overview]
Message-ID: <20240905191011.41650-1-snitzer@kernel.org> (raw)
Hi,
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
The NFSD changes have all settled with this v16. This is the natural
pivot point for NFS client review to be completed (my understanding
from Trond is that Anna will be taking a close look).
Changes since v15, which are reflected in the top 3 commits on this
branch:
https://git.kernel.org/pub/scm/linux/kernel/git/snitzer/linux.git/log/?h=nfs-localio-for-next.v15-with-fixups
- Fixes to nfs_to to follow normal operations table pattern
Switch 'nfs_to' to a proper pointer that just needs a simple
assignment rather than memcpy() to initialize. Updated all 'nfs_to'
callers accordingly. Removed the associated 'nfs_to_<nfsd_func>_t'
function pointer typedefs that really weren't helpful.
- Removed EXPORT_SYMBOL_GPL for nfsd_serv_put, nfsd_file_put_local
and nfsd_file_file (these symbols are only used directly in nfsd, but
they are exposed to nfs via 'nfs_to' operations table).
- A few sparse fixes dealing primarily with rcu usage.
- nfs_common: push nfsd_open_local_fh rcu requirements to caller.
Now nfs_open_local_fh safely gets reference to nfsd_serv and then
drops rcu before its call to nfs_to->nfsd_open_local_fh. If that
call fails then nfs_to->nfsd_serv_put is needed. This cleans up the
awkward rcu bouncing that was in nfsd_open_local_fh but introduces
the need for both nfs_to->nfsd_serv_try_get and nfs_to->nfsd_serv_put.
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 | 172 +++++
fs/nfsd/Kconfig | 1 +
fs/nfsd/Makefile | 1 +
fs/nfsd/export.c | 30 +-
fs/nfsd/filecache.c | 101 ++-
fs/nfsd/filecache.h | 5 +
fs/nfsd/localio.c | 169 +++++
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 | 105 ++-
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 | 74 +++
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, 2454 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
--
2.44.0
next reply other threads:[~2024-09-05 19:10 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-05 19:09 Mike Snitzer [this message]
2024-09-05 19:09 ` [PATCH v16 01/26] nfs_common: factor out nfs_errtbl and nfs_stat_to_errno Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 02/26] nfs_common: factor out nfs4_errtbl and nfs4_stat_to_errno Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 03/26] nfs: factor out {encode,decode}_opaque_fixed to nfs_xdr.h Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 04/26] NFSD: Handle @rqstp == NULL in check_nfsd_access() Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 05/26] NFSD: Refactor nfsd_setuser_and_check_port() Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 06/26] NFSD: Avoid using rqstp->rq_vers in nfsd_set_fh_dentry() Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 07/26] NFSD: Short-circuit fh_verify tracepoints for LOCALIO Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 08/26] nfsd: factor out __fh_verify to allow NULL rqstp to be passed Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 09/26] nfsd: add nfsd_file_acquire_local() Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 10/26] nfsd: add nfsd_serv_try_get and nfsd_serv_put Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 11/26] SUNRPC: remove call_allocate() BUG_ONs Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 12/26] SUNRPC: add svcauth_map_clnt_to_svc_cred_local Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 13/26] SUNRPC: replace program list with program array Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 14/26] nfs_common: add NFS LOCALIO auxiliary protocol enablement Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 15/26] nfs_common: prepare for the NFS client to use nfsd_file for LOCALIO Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 16/26] nfsd: add LOCALIO support Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 17/26] nfsd: implement server support for NFS_LOCALIO_PROGRAM Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 18/26] nfs: pass struct nfsd_file to nfs_init_pgio and nfs_init_commit Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 19/26] nfs: add LOCALIO support Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 20/26] nfs: enable localio for non-pNFS IO Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 21/26] pnfs/flexfiles: enable localio support Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 22/26] nfs/localio: use dedicated workqueues for filesystem read and write Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 23/26] nfs: implement client support for NFS_LOCALIO_PROGRAM Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 24/26] nfs: add Documentation/filesystems/nfs/localio.rst Mike Snitzer
2024-09-05 19:09 ` [PATCH v16 25/26] nfs: add FAQ section to Documentation/filesystems/nfs/localio.rst Mike Snitzer
2024-09-05 19:10 ` [PATCH v16 26/26] nfs: add "NFS Client and Server Interlock" section to localio.rst Mike Snitzer
2024-09-05 23:38 ` NeilBrown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240905191011.41650-1-snitzer@kernel.org \
--to=snitzer@kernel.org \
--cc=anna@kernel.org \
--cc=chuck.lever@oracle.com \
--cc=jlayton@kernel.org \
--cc=linux-nfs@vger.kernel.org \
--cc=neilb@suse.de \
--cc=trondmy@hammerspace.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox