Linux NFS development
 help / color / mirror / Atom feed
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


             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