All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Bruce Fields <bfields@fieldses.org>,
	Linux NFS Mailing List <linux-nfs@vger.kernel.org>,
	linux-rdma <linux-rdma@vger.kernel.org>
Subject: [GIT PULL] nfsd changes for 5.11
Date: Mon, 14 Dec 2020 15:41:13 -0500	[thread overview]
Message-ID: <200F1E47-2C8E-42FB-A661-0139F424C0D4@oracle.com> (raw)

Hi Linus-

Seasons greetings. tl;dr:

The following changes since commit b65054597872ce3aefbc6a666385eabdf9e288da:

  Linux 5.10-rc6 (2020-11-29 15:50:50 -0800)

are available in the Git repository at:

  git://git.linux-nfs.org/projects/cel/cel-2.6.git tags/nfsd-5.11

for you to fetch changes up to 716a8bc7f706eeef80ab42c99d9f210eda845c81:

  nfsd: Record NFSv4 pre/post-op attributes as non-atomic (2020-12-09 09:39:38 -0500)

----------------------------------------------------------------

Several substantial changes this time around.

+ Previously, exporting an NFS mount via NFSD was considered to be
  an unsupported feature. With v5.11, the community has attempted
  to make re-exporting a first-class feature of NFSD. This would
  enable the Linux in-kernel NFS server to be used as an intermediate
  cache for a remotely-located primary NFS server, for example, even
  with other NFS server implementations, like a NetApp filer, as the
  primary.

+ A short series of patches brings support for multiple RPC/RDMA
  data chunks per RPC transaction to the Linux NFS server's RPC/RDMA
  transport implementation. This is a part of the RPC/RDMA spec that
  the other premiere NFS/RDMA implementation (Solaris) has had for a
  very long time, and completes the implementation of RPC/RDMA
  version 1 in the Linux kernel's NFS server.

+ Long ago, NFSv4 support was introduced to NFSD using a series of
  C macros that hid dprintk's and goto's. Over time, the kernel's
  XDR implementation has been greatly improved, but these C macros
  have remained and become fallow. A series of patches in this pull
  request completely replaces those macros with the use of current
  kernel XDR infrastructure. Benefits include:

  - More robust input sanitization in NFSD's NFSv4 XDR decoders.
  - Make it easier to use common kernel library functions that use
    XDR stream APIs (for example, GSS-API).
  - Align the structure of the source code with the RFCs so it is
    easier to learn, verify, and maintain our XDR implementation.
  - Removal of more than a hundred hidden dprintk() call sites.
  - Removal of some explicit manipulation of pages to help make the
    eventual transition to xdr->bvec smoother.

+ On top of several related fixes in 5.10-rc, there are a few more
  fixes to get the Linux NFSD implementation of NFSv4.2 inter-server
  copy up to speed.

And as usual, there is a pinch of seasoning in the form of a
collection of unrelated minor bug fixes and clean-ups.

Many thanks to all who contributed this time around!

----------------------------------------------------------------
Alex Shi (1):
      nfsd/nfs3: remove unused macro nfsd3_fhandleres

Cheng Lin (1):
      nfs_common: need lock during iterate through the list

Chuck Lever (112):
      svcrdma: Catch another Reply chunk overflow case
      SUNRPC: Adjust synopsis of xdr_buf_subsegment()
      svcrdma: Const-ify the xdr_buf arguments
      svcrdma: Refactor the RDMA Write path
      SUNRPC: Rename svc_encode_read_payload()
      NFSD: Invoke svc_encode_result_payload() in "read" NFSD encoders
      svcrdma: Post RDMA Writes while XDR encoding replies
      svcrdma: Clean up svc_rdma_encode_reply_chunk()
      svcrdma: Add a "parsed chunk list" data structure
      svcrdma: Use parsed chunk lists to derive the inv_rkey
      svcrdma: Use parsed chunk lists to detect reverse direction replies
      svcrdma: Use parsed chunk lists to construct RDMA Writes
      svcrdma: Use parsed chunk lists to encode Reply transport headers
      svcrdma: Support multiple write chunks when pulling up
      svcrdma: Support multiple Write chunks in svc_rdma_map_reply_msg()
      svcrdma: Support multiple Write chunks in svc_rdma_send_reply_chunk
      svcrdma: Remove chunk list pointers
      svcrdma: Clean up chunk tracepoints
      svcrdma: Rename info::ri_chunklen
      svcrdma: Use the new parsed chunk list when pulling Read chunks
      svcrdma: support multiple Read chunks per RPC
      SUNRPC: Move the svc_xdr_recvfrom() tracepoint
      NFSD: Clean up the show_nf_may macro
      NFSD: Remove extra "0x" in tracepoint format specifier
      NFSD: Add SPDX header for fs/nfsd/trace.c
      SUNRPC: Add xdr_set_scratch_page() and xdr_reset_scratch_buffer()
      SUNRPC: Prepare for xdr_stream-style decoding on the server-side
      NFSD: Add common helpers to decode void args and encode void results
      NFSD: Add tracepoints in nfsd_dispatch()
      NFSD: Add tracepoints in nfsd4_decode/encode_compound()
      NFSD: Replace the internals of the READ_BUF() macro
      NFSD: Replace READ* macros in nfsd4_decode_access()
      NFSD: Replace READ* macros in nfsd4_decode_close()
      NFSD: Replace READ* macros in nfsd4_decode_commit()
      NFSD: Change the way the expected length of a fattr4 is checked
      NFSD: Replace READ* macros that decode the fattr4 size attribute
      NFSD: Replace READ* macros that decode the fattr4 acl attribute
      NFSD: Replace READ* macros that decode the fattr4 mode attribute
      NFSD: Replace READ* macros that decode the fattr4 owner attribute
      NFSD: Replace READ* macros that decode the fattr4 owner_group attribute
      NFSD: Replace READ* macros that decode the fattr4 time_set attributes
      NFSD: Replace READ* macros that decode the fattr4 security label attribute
      NFSD: Replace READ* macros that decode the fattr4 umask attribute
      NFSD: Replace READ* macros in nfsd4_decode_fattr()
      NFSD: Replace READ* macros in nfsd4_decode_create()
      NFSD: Replace READ* macros in nfsd4_decode_delegreturn()
      NFSD: Replace READ* macros in nfsd4_decode_getattr()
      NFSD: Replace READ* macros in nfsd4_decode_link()
      NFSD: Relocate nfsd4_decode_opaque()
      NFSD: Add helpers to decode a clientid4 and an NFSv4 state owner
      NFSD: Add helper for decoding locker4
      NFSD: Replace READ* macros in nfsd4_decode_lock()
      NFSD: Replace READ* macros in nfsd4_decode_lockt()
      NFSD: Replace READ* macros in nfsd4_decode_locku()
      NFSD: Replace READ* macros in nfsd4_decode_lookup()
      NFSD: Add helper to decode NFSv4 verifiers
      NFSD: Add helper to decode OPEN's createhow4 argument
      NFSD: Add helper to decode OPEN's openflag4 argument
      NFSD: Replace READ* macros in nfsd4_decode_share_access()
      NFSD: Replace READ* macros in nfsd4_decode_share_deny()
      NFSD: Add helper to decode OPEN's open_claim4 argument
      NFSD: Replace READ* macros in nfsd4_decode_open()
      NFSD: Replace READ* macros in nfsd4_decode_open_confirm()
      NFSD: Replace READ* macros in nfsd4_decode_open_downgrade()
      NFSD: Replace READ* macros in nfsd4_decode_putfh()
      NFSD: Replace READ* macros in nfsd4_decode_read()
      NFSD: Replace READ* macros in nfsd4_decode_readdir()
      NFSD: Replace READ* macros in nfsd4_decode_remove()
      NFSD: Replace READ* macros in nfsd4_decode_rename()
      NFSD: Replace READ* macros in nfsd4_decode_renew()
      NFSD: Replace READ* macros in nfsd4_decode_secinfo()
      NFSD: Replace READ* macros in nfsd4_decode_setattr()
      NFSD: Replace READ* macros in nfsd4_decode_setclientid()
      NFSD: Replace READ* macros in nfsd4_decode_setclientid_confirm()
      NFSD: Replace READ* macros in nfsd4_decode_verify()
      NFSD: Replace READ* macros in nfsd4_decode_write()
      NFSD: Replace READ* macros in nfsd4_decode_release_lockowner()
      NFSD: Replace READ* macros in nfsd4_decode_cb_sec()
      NFSD: Replace READ* macros in nfsd4_decode_backchannel_ctl()
      NFSD: Replace READ* macros in nfsd4_decode_bind_conn_to_session()
      NFSD: Add a separate decoder to handle state_protect_ops
      NFSD: Add a separate decoder for ssv_sp_parms
      NFSD: Add a helper to decode state_protect4_a
      NFSD: Add a helper to decode nfs_impl_id4
      NFSD: Add a helper to decode channel_attrs4
      NFSD: Replace READ* macros in nfsd4_decode_create_session()
      NFSD: Replace READ* macros in nfsd4_decode_destroy_session()
      NFSD: Replace READ* macros in nfsd4_decode_free_stateid()
      NFSD: Replace READ* macros in nfsd4_decode_getdeviceinfo()
      NFSD: Replace READ* macros in nfsd4_decode_layoutcommit()
      NFSD: Replace READ* macros in nfsd4_decode_layoutget()
      NFSD: Replace READ* macros in nfsd4_decode_layoutreturn()
      NFSD: Replace READ* macros in nfsd4_decode_secinfo_no_name()
      NFSD: Replace READ* macros in nfsd4_decode_sequence()
      NFSD: Replace READ* macros in nfsd4_decode_test_stateid()
      NFSD: Replace READ* macros in nfsd4_decode_destroy_clientid()
      NFSD: Replace READ* macros in nfsd4_decode_reclaim_complete()
      NFSD: Replace READ* macros in nfsd4_decode_fallocate()
      NFSD: Replace READ* macros in nfsd4_decode_nl4_server()
      NFSD: Replace READ* macros in nfsd4_decode_copy()
      NFSD: Replace READ* macros in nfsd4_decode_copy_notify()
      NFSD: Replace READ* macros in nfsd4_decode_offload_status()
      NFSD: Replace READ* macros in nfsd4_decode_seek()
      NFSD: Replace READ* macros in nfsd4_decode_clone()
      NFSD: Replace READ* macros in nfsd4_decode_xattr_name()
      NFSD: Replace READ* macros in nfsd4_decode_setxattr()
      NFSD: Replace READ* macros in nfsd4_decode_listxattrs()
      NFSD: Make nfsd4_ops::opnum a u32
      NFSD: Replace READ* macros in nfsd4_decode_compound()
      NFSD: Remove macros that are no longer used
      SUNRPC: Remove XDRBUF_SPARSE_PAGES flag in gss_proxy upcall
      NFSD: Fix sparse warning in nfs4proc.c

Dai Ngo (1):
      NFSD: Fix 5 seconds delay when doing inter server copy

Huang Guobin (1):
      nfsd: Fix error return code in nfsd_file_cache_init()

J. Bruce Fields (5):
      nfsd: only call inode_query_iversion in the I_VERSION case
      nfsd: simplify nfsd4_change_info
      nfsd: minor nfsd4_change_attribute cleanup
      nfsd4: don't query change attribute in v2/v3 case
      Revert "nfsd4: support change_attr_type attribute"

Jeff Layton (3):
      nfsd: add a new EXPORT_OP_NOWCC flag to struct export_operations
      nfsd: allow filesystems to opt out of subtree checking
      nfsd: close cached files prior to a REMOVE or RENAME that would replace target

Roberto Bergantinos Corpas (1):
      sunrpc: clean-up cache downcall

Tom Rix (1):
      NFSD: A semicolon is not needed after a switch statement.

Trond Myklebust (4):
      exportfs: Add a function to return the raw output from fh_to_dentry()
      nfsd: Fix up nfsd to ensure that timeout errors don't result in ESTALE
      nfsd: Set PF_LOCAL_THROTTLE on local filesystems only
      nfsd: Record NFSv4 pre/post-op attributes as non-atomic

kazuo ito (1):
      nfsd: Fix message level for normal termination

 Documentation/filesystems/nfs/exporting.rst |   52 ++
 fs/exportfs/expfs.c                         |   32 +-
 fs/nfs/blocklayout/blocklayout.c            |    2 +-
 fs/nfs/blocklayout/dev.c                    |    2 +-
 fs/nfs/dir.c                                |    2 +-
 fs/nfs/export.c                             |    3 +
 fs/nfs/filelayout/filelayout.c              |    2 +-
 fs/nfs/filelayout/filelayoutdev.c           |    2 +-
 fs/nfs/flexfilelayout/flexfilelayout.c      |    2 +-
 fs/nfs/flexfilelayout/flexfilelayoutdev.c   |    2 +-
 fs/nfs/nfs42xdr.c                           |    2 +-
 fs/nfs/nfs4xdr.c                            |    6 +-
 fs/nfs_common/grace.c                       |    6 +-
 fs/nfsd/export.c                            |    6 +
 fs/nfsd/filecache.c                         |    1 +
 fs/nfsd/nfs2acl.c                           |   21 +-
 fs/nfsd/nfs3acl.c                           |    8 +-
 fs/nfsd/nfs3proc.c                          |   11 +-
 fs/nfsd/nfs3xdr.c                           |   40 +-
 fs/nfsd/nfs4proc.c                          |   35 +-
 fs/nfsd/nfs4state.c                         |    3 +-
 fs/nfsd/nfs4xdr.c                           | 2665 +++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------
 fs/nfsd/nfsd.h                              |    9 +-
 fs/nfsd/nfsfh.c                             |   34 +-
 fs/nfsd/nfsfh.h                             |   22 +-
 fs/nfsd/nfsproc.c                           |   25 +-
 fs/nfsd/nfssvc.c                            |   50 +-
 fs/nfsd/nfsxdr.c                            |   16 +-
 fs/nfsd/trace.c                             |    1 +
 fs/nfsd/trace.h                             |  176 +++++-
 fs/nfsd/vfs.c                               |   29 +-
 fs/nfsd/xdr.h                               |    2 -
 fs/nfsd/xdr3.h                              |    2 -
 fs/nfsd/xdr4.h                              |   43 +-
 include/linux/exportfs.h                    |   13 +
 include/linux/iversion.h                    |   13 +
 include/linux/nfs4.h                        |    8 -
 include/linux/sunrpc/svc.h                  |   22 +-
 include/linux/sunrpc/svc_rdma.h             |   36 +-
 include/linux/sunrpc/svc_rdma_pcl.h         |  128 +++++
 include/linux/sunrpc/svc_xprt.h             |    4 +-
 include/linux/sunrpc/xdr.h                  |   91 +++-
 include/trace/events/rpcrdma.h              |  171 +++---
 include/trace/events/sunrpc.h               |   24 -
 net/sunrpc/auth_gss/gss_rpc_upcall.c        |   15 +-
 net/sunrpc/auth_gss/gss_rpc_xdr.c           |    3 +-
 net/sunrpc/cache.c                          |   41 +-
 net/sunrpc/svc.c                            |   16 +-
 net/sunrpc/svc_xprt.c                       |    4 +-
 net/sunrpc/svcsock.c                        |    8 +-
 net/sunrpc/xdr.c                            |   78 ++-
 net/sunrpc/xprtrdma/Makefile                |    2 +-
 net/sunrpc/xprtrdma/svc_rdma_backchannel.c  |   14 +-
 net/sunrpc/xprtrdma/svc_rdma_pcl.c          |  306 +++++++++++
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c     |  316 ++++++-----
 net/sunrpc/xprtrdma/svc_rdma_rw.c           |  608 +++++++++++++++------
 net/sunrpc/xprtrdma/svc_rdma_sendto.c       |  560 ++++++++++---------
 net/sunrpc/xprtrdma/svc_rdma_transport.c    |    2 +-
 58 files changed, 3536 insertions(+), 2261 deletions(-)
 create mode 100644 include/linux/sunrpc/svc_rdma_pcl.h
 create mode 100644 net/sunrpc/xprtrdma/svc_rdma_pcl.c
--
Chuck Lever




             reply	other threads:[~2020-12-14 20:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-14 20:41 Chuck Lever [this message]
2020-12-16  3:44 ` [GIT PULL] nfsd changes for 5.11 pr-tracker-bot
2020-12-16 14:37 ` Bruce Fields

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=200F1E47-2C8E-42FB-A661-0139F424C0D4@oracle.com \
    --to=chuck.lever@oracle.com \
    --cc=bfields@fieldses.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.