mbox series

[GIT,PULL] nfsd changes for 5.11

Message ID 200F1E47-2C8E-42FB-A661-0139F424C0D4@oracle.com (mailing list archive)
State New
Headers show
Series [GIT,PULL] nfsd changes for 5.11 | expand

Pull-request

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

Message

Chuck Lever Dec. 14, 2020, 8:41 p.m. UTC
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

Comments

pr-tracker-bot@kernel.org Dec. 16, 2020, 3:44 a.m. UTC | #1
The pull request you sent on Mon, 14 Dec 2020 15:41:13 -0500:

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

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/1a50ede2b3c846761a71c409f53e9121311a13c2

Thank you!
J. Bruce Fields Dec. 16, 2020, 2:37 p.m. UTC | #2
On Mon, Dec 14, 2020 at 03:41:13PM -0500, Chuck Lever wrote:
> 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.

To be clear: this is work in progress.  I've been keeping notes at
https://wiki.linux-nfs.org/wiki/index.php/NFS_re-export

Remaining issues include reboot recovery, filehandle size limits, and an
unidentified crash in the nfsd file locking code.

--b.

>   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
> 
>