[GIT PULL] NFSD changes for v6.8

From: Chuck Lever
Date: Tue Jan 09 2024 - 11:30:03 EST


Hello Linus -

The following changes since commit 0dd3ee31125508cd67f7e7172247f05b7fd1753a:

Linux 6.7 (2024-01-07 12:18:38 -0800)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git tags/nfsd-6.8

for you to fetch changes up to 17419aefcbfd9891863e8b8132f0bca9a6b2984e:

nfsd: rename nfsd_last_thread() to nfsd_destroy_serv() (2024-01-07 17:54:33 -0500)

----------------------------------------------------------------
NFSD 6.8 Release Notes

The bulk of the patches for this release are clean-ups and minor bug
fixes.

There is one significant revert to mention: support for RDMA Read
operations in the server's RPC-over-RDMA transport implementation
has been fixed so it waits for Read completion in a way that avoids
tying up an nfsd thread. This prevents a possible DoS vector if an
RPC-over-RDMA client should become unresponsive during RDMA Read
operations.

As always I am grateful to NFSD contributors, reviewers, and
testers.

----------------------------------------------------------------
ChenXiaoSong (1):
NFSv4, NFSD: move enum nfs_cb_opnum4 to include/linux/nfs4.h

Chuck Lever (48):
NFSD: Make the file_delayed_close workqueue UNBOUND
NFSD: Remove nfsd_drc_gc() tracepoint
NFSD: Document lack of f_pos_lock in nfsd_readdir()
SUNRPC: Add a server-side API for retrieving an RPC's pseudoflavor
NFSD: Replace RQ_SPLICE_OK in nfsd_read()
NFSD: Modify NFSv4 to use nfsd_read_splice_ok()
SUNRPC: Remove RQ_SPLICE_OK
svcrdma: Eliminate allocation of recv_ctxt objects in backchannel
svcrdma: Pre-allocate svc_rdma_recv_ctxt objects
svcrdma: Add a utility workqueue to svcrdma
svcrdma: Add an async version of svc_rdma_send_ctxt_put()
svcrdma: Add an async version of svc_rdma_write_info_free()
svcrdma: Clean up locking
svcrdma: Add lockdep class keys for transport locks
rpcrdma: Introduce a simple cid tracepoint class
svcrdma: SQ error tracepoints should report completion IDs
svcrdma: DMA error tracepoints should report completion IDs
svcrdma: Update some svcrdma DMA-related tracepoints
svcrdma: Reduce size of struct svc_rdma_rw_ctxt
svcrdma: Acquire the svcxprt_rdma pointer from the CQ context
svcrdma: Explicitly pass the transport into Write chunk I/O paths
svcrdma: Explicitly pass the transport into Read chunk I/O paths
svcrdma: Explicitly pass the transport to svc_rdma_post_chunk_ctxt()
svcrdma: Pass a pointer to the transport to svc_rdma_cc_release()
svcrdma: Remove the svc_rdma_chunk_ctxt::cc_rdma field
svcrdma: Move struct svc_rdma_chunk_ctxt to svc_rdma.h
svcrdma: Start moving fields out of struct svc_rdma_read_info
svcrdma: Move svc_rdma_read_info::ri_pageno to struct svc_rdma_recv_ctxt
svcrdma: Move read_info::ri_pageoff into struct svc_rdma_recv_ctxt
svcrdma: Update synopsis of svc_rdma_build_read_segment()
svcrdma: Update synopsis of svc_rdma_build_read_chunk()
svcrdma: Update synopsis of svc_rdma_read_chunk_range()
svcrdma: Update the synopsis of svc_rdma_read_data_item()
svcrdma: Update synopsis of svc_rdma_copy_inline_range()
svcrdma: Update synopsis of svc_rdma_read_multiple_chunks()
svcrdma: Update the synopsis of svc_rdma_read_call_chunk()
svcrdma: Update the synopsis of svc_rdma_read_special()
svcrdma: Remove struct svc_rdma_read_info
svcrdma: Move the svc_rdma_cc_init() call
svcrdma: De-duplicate completion ID initialization helpers
svcrdma: Optimize svc_rdma_cc_init()
svcrdma: Remove pointer addresses shown in dprintk()
svcrdma: Remove queue-shortening warnings
svcrdma: Clean up comment in svc_rdma_accept()
svcrdma: Add back svc_rdma_recv_ctxt::rc_pages
svcrdma: Add back svcxprt_rdma::sc_read_complete_q
svcrdma: Copy construction of svc_rqst::rq_arg to rdma_read_complete()
svcrdma: Implement multi-stage Read completion again

Dai Ngo (1):
SUNRPC: remove printk when back channel request not found

Dan Carpenter (1):
nfsd: remove unnecessary NULL check

Jeff Layton (1):
nfsd: new Kconfig option for legacy client tracking

NeilBrown (3):
svc: don't hold reference for poolstats, only mutex.
SUNRPC: discard sv_refcnt, and svc_get/svc_put
nfsd: rename nfsd_last_thread() to nfsd_destroy_serv()

Oleg Nesterov (1):
NFSD: use read_seqbegin() rather than read_seqbegin_or_lock()

fs/lockd/svc.c | 10 +--
fs/nfs/callback.c | 13 ++-
fs/nfs/callback.h | 19 ----
fs/nfsd/Kconfig | 16 ++++
fs/nfsd/filecache.c | 2 +-
fs/nfsd/netns.h | 11 +--
fs/nfsd/nfs4callback.c | 26 +-----
fs/nfsd/nfs4proc.c | 7 +-
fs/nfsd/nfs4recover.c | 97 +++++++++++++-------
fs/nfsd/nfs4state.c | 2 +-
fs/nfsd/nfs4xdr.c | 13 +--
fs/nfsd/nfscache.c | 6 +-
fs/nfsd/nfsctl.c | 24 +++--
fs/nfsd/nfsd.h | 2 +-
fs/nfsd/nfssvc.c | 69 ++++-----------
fs/nfsd/trace.h | 22 -----
fs/nfsd/vfs.c | 46 +++++++++-
fs/nfsd/vfs.h | 1 +
fs/nfsd/xdr4.h | 1 +
include/linux/nfs4.h | 22 +++++
include/linux/sunrpc/svc.h | 35 ++------
include/linux/sunrpc/svc_rdma.h | 67 +++++++++++++-
include/linux/sunrpc/svcauth.h | 7 +-
include/trace/events/rpcrdma.h | 254 +++++++++++++++++++++++-----------------------------
include/trace/events/sunrpc.h | 1 -
net/sunrpc/auth_gss/svcauth_gss.c | 16 ++--
net/sunrpc/svc.c | 15 +---
net/sunrpc/svc_xprt.c | 32 +++++--
net/sunrpc/svcauth.c | 16 ++++
net/sunrpc/svcsock.c | 14 +--
net/sunrpc/xprtrdma/svc_rdma.c | 32 +++++--
net/sunrpc/xprtrdma/svc_rdma_backchannel.c | 11 +--
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 211 +++++++++++++++++++++++++++++++++++++-------
net/sunrpc/xprtrdma/svc_rdma_rw.c | 450 +++++++++++++++++++++++++++++++++++++++------------------------------------------------------
net/sunrpc/xprtrdma/svc_rdma_sendto.c | 112 ++++++++++++-----------
net/sunrpc/xprtrdma/svc_rdma_transport.c | 36 ++++----
net/sunrpc/xprtrdma/verbs.c | 2 +-
37 files changed, 923 insertions(+), 797 deletions(-)

--
Chuck Lever