[GIT PULL] nfsd changes for v6.6

From: Chuck Lever III
Date: Thu Aug 31 2023 - 10:39:48 EST


Hello Linus-

Aside from observing the significant substance of this PR, one
housekeeping item of note is the first commit in the series,
which is a second fix for c96e2a695e00 ("sunrpc: set the
bv_offset of first bvec in svc_tcp_sendmsg").

The bug was reported during -rc7 and the test results became
available only after the v6.6 merge window opened. Thus I have
rebased the nfsd v6.6 PR on that fix so it can be backported
swiftly and easily to v6.5.y. The reporter has confirmed that
both this small fix and the more significant related changes
in v6.6 do not trigger his qcow2 direct I/O reproducer.

Many and great thanks to all contributors and testers for this
release of nfsd.


-- Pull Request follows --

The following changes since commit 2dde18cd1d8fac735875f2e4987f11817cc0bc2c:

Linux 6.5 (2023-08-27 14:49:51 -0700)

are available in the Git repository at:

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

for you to fetch changes up to b38a6023da6a12b561f0421c6a5a1f7624a1529c:

Documentation: Add missing documentation for EXPORT_OP flags (2023-08-29 17:45:22 -0400)

----------------------------------------------------------------
NFSD 6.6 Release Notes

I'm thrilled to announce that the Linux in-kernel NFS server now
offers NFSv4 write delegations. A write delegation enables a client
to cache data and metadata for a single file more aggressively,
reducing network round trips and server workload. Many thanks to Dai
Ngo for contributing this facility, and to Jeff Layton and Neil
Brown for reviewing and testing it.

This release also sees the removal of all support for DES- and
triple-DES-based Kerberos encryption types in the kernel's SunRPC
implementation. These encryption types have been deprecated by the
Internet community for years and are considered insecure. This
change affects both the in-kernel NFS client and server.

The server's UDP and TCP socket transports have now fully adopted
David Howells' new bio_vec iterator so that no more than one
sendmsg() call is needed to transmit each RPC message. In
particular, this helps kTLS optimize record boundaries when sending
RPC-with-TLS replies, and it takes the server a baby step closer to
handling file I/O via folios.

We've begun work on overhauling the SunRPC thread scheduler to
remove a costly linked-list walk when looking for an idle RPC
service thread to wake. The pre-requisites are included in this
release. Thanks to Neil Brown for his ongoing work on this
improvement.

----------------------------------------------------------------
Alexander Aring (1):
lockd: nlm_blocked list race fixes

Chuck Lever (30):
SUNRPC: Fix the recent bv_offset fix
NFSD: Report zero space limit for write delegations
SUNRPC: Remove RPCSEC_GSS_KRB5_ENCTYPES_DES
SUNRPC: Remove Kunit tests for the DES3 encryption type
SUNRPC: Remove DES and DES3 enctypes from the supported enctypes list
SUNRPC: Remove code behind CONFIG_RPCSEC_GSS_KRB5_SIMPLIFIED
SUNRPC: Remove krb5_derive_key_v1()
SUNRPC: Remove gss_import_v1_context()
SUNRPC: Remove CONFIG_RPCSEC_GSS_KRB5_CRYPTOSYSTEM
SUNRPC: Remove the ->import_ctx method
SUNRPC: Remove net/sunrpc/auth_gss/gss_krb5_seqnum.c
NFSD: Refactor nfsd_reply_cache_free_locked()
NFSD: Rename nfsd_reply_cache_alloc()
NFSD: Replace nfsd_prune_bucket()
NFSD: Refactor the duplicate reply cache shrinker
NFSD: Remove svc_rqst::rq_cacherep
NFSD: Rename struct svc_cacherep
SUNRPC: Convert svc_tcp_sendmsg to use bio_vecs directly
SUNRPC: Send RPC message on TCP with a single sock_sendmsg() call
SUNRPC: Convert svc_udp_sendto() to use the per-socket bio_vec array
SUNRPC: Revert e0a912e8ddba
SUNRPC: Reduce thread wake-up rate when receiving large RPC messages
SUNRPC: change svc_xprt::xpt_flags bits to enum
SUNRPC: Add enum svc_auth_status
SUNRPC: Move trace_svc_xprt_enqueue
SUNRPC: Deduplicate thread wake-up code
SUNRPC: Count ingress RPC messages per svc_pool
SUNRPC: Clean up svc_set_num_threads
NFSD: da_addr_body field missing in some GETDEVICEINFO replies
Documentation: Add missing documentation for EXPORT_OP flags

Dai Ngo (3):
locks: allow support for write delegation
NFSD: handle GETATTR conflict with write delegation
NFSD: Enable write delegation support

Jeff Layton (5):
nfsd: add a MODULE_DESCRIPTION
nfsd: handle failure to collect pre/post-op attrs more sanely
nfsd: remove unsafe BUG_ON from set_change_info
nfsd: set missing after_change as before_change + 1
nfsd: inherit required unset default acls from effective set

NeilBrown (12):
lockd: remove SIGKILL handling
nfsd: don't allow nfsd threads to be signalled.
nfsd: Simplify code around svc_exit_thread() call in nfsd()
nfsd: separate nfsd_last_thread() from nfsd_put()
SUNRPC: call svc_process() from svc_recv().
SUNRPC: change svc_recv() to return void.
SUNRPC: remove timeout arg from svc_recv()
SUNRPC: change cache_head.flags bits to enum
SUNRPC: change svc_pool::sp_flags bits to enum
SUNRPC: change svc_rqst::rq_flags bits to enum
SUNRPC: make rqst_should_sleep() idempotent()
SUNRPC: Remove return value of svc_pool_wake_idle_thread()

Su Hui (1):
fs: lockd: avoid possible wrong NULL parameter

Yue Haibing (2):
SUNRPC: Remove unused declarations
SUNRPC: Remove unused declaration rpc_modcount()

YueHaibing (1):
sunrpc: Remove unused extern declarations

Zhu Wang (1):
exportfs: remove kernel-doc warnings in exportfs

Documentation/filesystems/nfs/exporting.rst | 26 +++++++++
fs/exportfs/expfs.c | 1 +
fs/lockd/mon.c | 3 +
fs/lockd/svc.c | 52 ++++-------------
fs/lockd/svclock.c | 18 +++++-
fs/locks.c | 7 ---
fs/nfs/callback.c | 23 ++------
fs/nfsd/blocklayoutxdr.c | 9 +++
fs/nfsd/cache.h | 8 ++-
fs/nfsd/flexfilelayoutxdr.c | 9 +++
fs/nfsd/nfs3proc.c | 4 +-
fs/nfsd/nfs4acl.c | 34 +++++++++--
fs/nfsd/nfs4proc.c | 51 ++++++++++++++---
fs/nfsd/nfs4state.c | 162 +++++++++++++++++++++++++++++++++++++++++++++-------
fs/nfsd/nfs4xdr.c | 39 +++++++------
fs/nfsd/nfscache.c | 206 ++++++++++++++++++++++++++++++++++++++++++------------------------
fs/nfsd/nfsctl.c | 1 +
fs/nfsd/nfsd.h | 7 ++-
fs/nfsd/nfsfh.c | 26 +++++----
fs/nfsd/nfsfh.h | 6 +-
fs/nfsd/nfssvc.c | 111 +++++++++---------------------------
fs/nfsd/state.h | 3 +
fs/nfsd/stats.c | 2 +
fs/nfsd/stats.h | 7 +++
fs/nfsd/trace.h | 27 ++++++++-
fs/nfsd/vfs.c | 52 +++++++++++------
fs/nfsd/xdr4.h | 11 ----
include/linux/lockd/lockd.h | 4 +-
include/linux/sunrpc/cache.h | 12 ++--
include/linux/sunrpc/stats.h | 23 +++-----
include/linux/sunrpc/svc.h | 52 ++++++++---------
include/linux/sunrpc/svc_xprt.h | 38 +++++++------
include/linux/sunrpc/svcauth.h | 53 ++++++++---------
include/linux/sunrpc/svcsock.h | 9 +--
include/linux/sunrpc/xdr.h | 2 +
include/trace/events/sunrpc.h | 80 ++++++++++++++++----------
net/sunrpc/.kunitconfig | 1 -
net/sunrpc/Kconfig | 35 ------------
net/sunrpc/auth_gss/Makefile | 2 +-
net/sunrpc/auth_gss/gss_krb5_internal.h | 23 --------
net/sunrpc/auth_gss/gss_krb5_keys.c | 84 ---------------------------
net/sunrpc/auth_gss/gss_krb5_mech.c | 257 +---------------------------------------------------------------------------------
net/sunrpc/auth_gss/gss_krb5_seal.c | 69 ----------------------
net/sunrpc/auth_gss/gss_krb5_seqnum.c | 106 ----------------------------------
net/sunrpc/auth_gss/gss_krb5_test.c | 196 ---------------------------------------------------------------
net/sunrpc/auth_gss/gss_krb5_unseal.c | 77 -------------------------
net/sunrpc/auth_gss/gss_krb5_wrap.c | 287 --------------------------------------------------------------------------------------------
net/sunrpc/auth_gss/svcauth_gss.c | 7 +--
net/sunrpc/svc.c | 97 +++++++++++++++++++------------
net/sunrpc/svc_xprt.c | 126 +++++++++++++++-------------------------
net/sunrpc/svcauth.c | 35 ++++++++++--
net/sunrpc/svcauth_unix.c | 9 ++-
net/sunrpc/svcsock.c | 131 +++++++++++++++++++-----------------------
net/sunrpc/xdr.c | 50 ++++++++++++++++
54 files changed, 970 insertions(+), 1800 deletions(-)
delete mode 100644 net/sunrpc/auth_gss/gss_krb5_seqnum.c

--
Chuck Lever