From: Bruce Fields <bfields@fieldses.org>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>,
Linux NFS Mailing List <linux-nfs@vger.kernel.org>,
linux-rdma <linux-rdma@vger.kernel.org>
Subject: Re: [GIT PULL] nfsd changes for 5.11
Date: Wed, 16 Dec 2020 09:37:46 -0500 [thread overview]
Message-ID: <20201216143746.GA26084@fieldses.org> (raw)
In-Reply-To: <200F1E47-2C8E-42FB-A661-0139F424C0D4@oracle.com>
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
>
>
prev parent reply other threads:[~2020-12-16 14:38 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-14 20:41 [GIT PULL] nfsd changes for 5.11 Chuck Lever
2020-12-16 3:44 ` pr-tracker-bot
2020-12-16 14:37 ` Bruce Fields [this message]
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=20201216143746.GA26084@fieldses.org \
--to=bfields@fieldses.org \
--cc=chuck.lever@oracle.com \
--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.