[GIT PULL] nfsd changes for 5.15

From: Chuck Lever III
Date: Tue Aug 31 2021 - 10:47:04 EST


Hi Linus-

NFSD pull request follows below. First some notes:

Stephen Rothwell reports a minor merge conflict with Jeff Layton's
file-locks tree (and now your tree):

https://lore.kernel.org/lkml/20210824100737.4bd6d815@xxxxxxxxxxxxxxxx/

The resolution Stephen provided should be adequate.


There are two v5.13 regressions we are aware of:

- "[Bug 213887] kernel v5.13 regression & NFSv4.2 client timeouts?"

This issue appears to be addressed by recent commit 062b829c52ef
("SUNRPC: Fix XPT_BUSY flag leakage in svc_handle_xprt()...")

- NFS server regression in kernel 5.13 (tested w/ 5.13.9)

A fix for this has been queued for nfsd-5.15-1. It was a bit late
to be included in nfsd-5.15.


And there are two longstanding issues we are aware of:

- BTRFS subvolumes cannot be exported properly by NFSD

As featured on lwn.net:

Part I: https://lwn.net/Articles/866582/
Part II: https://lwn.net/Articles/866709/

Neil Brown is working on a set of patches to address this.

- NFSv4.1+ backchannel not getting restored after PATH_DOWN

This might be an NFS/RDMA-only problem. The reproducer is very
rare, so it's taking a while to nail down.


---- cut here ----


The following changes since commit 7c60610d476766e128cc4284bb6349732cbd6606:

Linux 5.14-rc6 (2021-08-15 13:40:53 -1000)

are available in the Git repository at:

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

for you to fetch changes up to 0bcc7ca40bd823193224e9f38bafbd8325aaf566:

nfsd: fix crash on LOCKT on reexported NFSv3 (2021-08-26 15:32:29 -0400)

----------------------------------------------------------------
New features:
- Support for server-side disconnect injection via debugfs
- Protocol definitions for new RPC_AUTH_TLS authentication flavor

Performance improvements:
- Reduce page allocator traffic in the NFSD splice read actor
- Reduce CPU utilization in svcrdma's Send completion handler

Notable bug fixes:
- Stabilize lockd operation when re-exporting NFS mounts
- Fix the use of %.*s in NFSD tracepoints
- Fix /proc/sys/fs/nfs/nsm_use_hostnames

----------------------------------------------------------------
Benjamin Coddington (1):
lockd: Fix invalid lockowner cast after vfs_test_lock

Chuck Lever (15):
NFSD: Clean up splice actor
SUNRPC: Add svc_rqst_replace_page() API
NFSD: Batch release pages during splice read
NFSD: Use new __string_len C macros for the nfs_dirent tracepoint
NFSD: Use new __string_len C macros for nfsd_clid_class
svcrdma: Fewer calls to wake_up() in Send completion handler
svcrdma: Relieve contention on sc_send_lock.
svcrdma: Convert rdma->sc_rw_ctxts to llist
SUNRPC: Fix a NULL pointer deref in trace_svc_stats_latency()
SUNRPC: Add RPC_AUTH_TLS protocol numbers
svcrdma: xpt_bc_xprt is already clear in __svc_rdma_free()
SUNRPC: Add a /sys/kernel/debug/fail_sunrpc/ directory
SUNRPC: Move client-side disconnect injection
SUNRPC: Server-side disconnect injection
SUNRPC: Add documentation for the fail_sunrpc/ directory

J. Bruce Fields (11):
rpc: fix gss_svc_init cleanup on failure
nfsd4: Fix forced-expiry locking
lockd: lockd server-side shouldn't set fl_ops
nlm: minor nlm_lookup_file argument change
nlm: minor refactoring
lockd: update nlm_lookup_file reexport comment
Keep read and write fds with each nlm_file
nfs: don't atempt blocking locks on nfs reexports
lockd: don't attempt blocking locks on nfs reexports
nfs: don't allow reexport reclaims
nfsd: fix crash on LOCKT on reexported NFSv3

Jia He (2):
sysctl: introduce new proc handler proc_dobool
lockd: change the proc_handler for nsm_use_hostnames

NeilBrown (1):
NFSD: remove vanity comments

Steven Rostedt (VMware) (1):
tracing: Add trace_event helper macros __string_len() and __assign_str_len()

Documentation/fault-injection/fault-injection.rst | 18 ++++++++++++++
fs/lockd/svc.c | 2 +-
fs/lockd/svc4proc.c | 7 ++++--
fs/lockd/svclock.c | 82 ++++++++++++++++++++++++++++++++++++--------------------------
fs/lockd/svcproc.c | 6 +++--
fs/lockd/svcsubs.c | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
fs/nfs/export.c | 2 +-
fs/nfs/file.c | 3 +++
fs/nfsd/lockd.c | 8 ++++--
fs/nfsd/nfs4state.c | 20 ++++++++++-----
fs/nfsd/nfsproc.c | 1 +
fs/nfsd/trace.h | 17 ++++++-------
fs/nfsd/vfs.c | 21 ++++------------
include/linux/errno.h | 1 +
include/linux/exportfs.h | 2 ++
include/linux/fs.h | 1 +
include/linux/lockd/bind.h | 3 ++-
include/linux/lockd/lockd.h | 11 ++++++---
include/linux/sunrpc/msg_prot.h | 1 +
include/linux/sunrpc/svc.h | 5 ++++
include/linux/sunrpc/svc_rdma.h | 7 +++---
include/linux/sunrpc/xdr.h | 1 +
include/linux/sunrpc/xprt.h | 18 --------------
include/linux/sysctl.h | 2 ++
include/trace/events/sunrpc.h | 8 +++---
include/trace/trace_events.h | 22 +++++++++++++++++
include/uapi/linux/nfsd/nfsfh.h | 1 -
kernel/sysctl.c | 42 ++++++++++++++++++++++++++++++++
lib/Kconfig.debug | 7 ++++++
net/sunrpc/auth_gss/svcauth_gss.c | 2 +-
net/sunrpc/debugfs.c | 85 ++++++++++++++++++++--------------------------------------------
net/sunrpc/fail.h | 25 +++++++++++++++++++
net/sunrpc/svc.c | 44 +++++++++++++++++++++++++++++++++
net/sunrpc/svc_xprt.c | 3 +++
net/sunrpc/xprt.c | 14 +++++++++++
net/sunrpc/xprtrdma/svc_rdma_rw.c | 56 +++++++++++++++++++++++++++---------------
net/sunrpc/xprtrdma/svc_rdma_sendto.c | 41 +++++++++++++++++--------------
net/sunrpc/xprtrdma/svc_rdma_transport.c | 11 ++-------
samples/trace_events/trace-events-sample.h | 27 +++++++++++++++++++++
39 files changed, 495 insertions(+), 246 deletions(-)
create mode 100644 net/sunrpc/fail.h

--
Chuck Lever