[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20260210161307.2356144-1-cel@kernel.org>
Date: Tue, 10 Feb 2026 11:13:07 -0500
From: Chuck Lever <cel@...nel.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: <linux-kernel@...r.kernel.org>,
<linux-nfs@...r.kernel.org>,
Jeff Layton <jlayton@...nel.org>
Subject: [GIT PULL] NFSD changes for the v7.0 merge window
The following changes since commit 63804fed149a6750ffd28610c5c1c98cce6bd377:
Linux 6.19-rc7 (2026-01-25 14:11:24 -0800)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git tags/nfsd-7.0
for you to fetch changes up to e939bd675634fd52d559b90e2cf58333e16afea8:
NFSD: Add POSIX ACL file attributes to SUPPATTR bitmasks (2026-01-29 09:48:33 -0500)
----------------------------------------------------------------
NFSD 7.0 Release Notes
Neil Brown and Jeff Layton contributed a dynamic thread pool sizing
mechanism for NFSD. The sunrpc layer now tracks minimum and maximum
thread counts per pool, and NFSD adjusts running thread counts based
on workload: idle threads exit after a timeout when the pool exceeds
its minimum, and new threads spawn automatically when all threads
are busy. Administrators control this behavior via the nfsdctl
netlink interface.
Rick Macklem, FreeBSD NFS maintainer, generously contributed server-
side support for the POSIX ACL extension to NFSv4, as specified in
draft-ietf-nfsv4-posix-acls. This extension allows NFSv4 clients to
get and set POSIX access and default ACLs using native NFSv4
operations, eliminating the need for sideband protocols. The feature
is gated by a Kconfig option since the IETF draft has not yet been
ratified.
Chuck Lever delivered numerous improvements to the xdrgen tool.
Error reporting now covers parsing, AST transformation, and invalid
declarations. Generated enum decoders validate incoming values
against valid enumerator lists. New features include pass-through
line support for embedding C directives in XDR specifications,
16-bit integer types, and program number definitions. Several code
generation issues were also addressed.
When an administrator revokes NFSv4 state for a filesystem via the
unlock_fs interface, ongoing async COPY operations referencing that
filesystem are now cancelled, with CB_OFFLOAD callbacks notifying
affected clients.
The remaining patches in this pull request are clean-ups and minor
optimizations. Sincere thanks to all contributors, reviewers,
testers, and bug reporters who participated in the v7.0 NFSD
development cycle.
----------------------------------------------------------------
Anthony Iliopoulos (2):
nfsd: never defer requests during idmap lookup
nfsd: fix return error code for nfsd_map_name_to_[ug]id
Chuck Lever (20):
NFSD: Clean up nfsd4_check_open_attributes()
NFSD: Add instructions on how to deal with xdrgen files
xdrgen: Generate "if" instead of "switch" for boolean union enumerators
xdrgen: Address some checkpatch whitespace complaints
xdrgen: Fix struct prefix for typedef types in program wrappers
xdrgen: Emit the program number definition
NFS: NFSERR_INVAL is not defined by NFSv2
xdrgen: Implement short (16-bit) integer types
xdrgen: Initialize data pointer for zero-length items
xdrgen: Remove inclusion of nlm4.h header
xdrgen: Improve parse error reporting
SUNRPC: auth_gss: fix memory leaks in XDR decoding error paths
xdrgen: Extend error reporting to AST transformation phase
xdrgen: Emit a max_arg_sz macro
xdrgen: Add enum value validation to generated decoders
nfsd: cancel async COPY operations when admin revokes filesystem state
xdrgen: Implement pass-through lines in specifications
NFSD: Add a Kconfig setting to enable support for NFSv4 POSIX ACLs
Add RPC language definition of NFSv4 POSIX ACL extension
NFSD: Add POSIX ACL file attributes to SUPPATTR bitmasks
Jeff Layton (10):
nfsd: prefix notification in nfsd4_finalize_deleg_timestamps() with "nfsd: "
nfsd: fix nfs4_file refcount leak in nfsd_get_dir_deleg()
sunrpc: split svc_set_num_threads() into two functions
sunrpc: remove special handling of NULL pool from svc_start/stop_kthreads()
sunrpc: track the max number of requested threads in a pool
sunrpc: introduce the concept of a minimum number of threads per pool
sunrpc: split new thread creation into a separate function
sunrpc: allow svc_recv() to return -ETIMEDOUT and -EBUSY
nfsd: adjust number of running nfsd threads based on activity
nfsd: add controls to set the minimum number of threads per pool
Khushal Chitturi (1):
xdrgen: improve error reporting for invalid void declarations
NeilBrown (2):
locks: ensure vfs_test_lock() never returns FILE_LOCK_DEFERRED
nfsd: use workqueue enable/disable APIs for v4_end_grace sync
Olga Kornievskaia (1):
NFSD: fix setting FMODE_NOCMTIME in nfs4_open_delegation
Rick Macklem (9):
NFSD: Add nfsd4_encode_fattr4_acl_trueform
NFSD: Add nfsd4_encode_fattr4_acl_trueform_scope
NFSD: Add nfsd4_encode_fattr4_posix_default_acl
NFSD: Add nfsd4_encode_fattr4_posix_access_acl
NFSD: Do not allow NFSv4 (N)VERIFY to check POSIX ACL attributes
NFSD: Refactor nfsd_setattr()'s ACL error reporting
NFSD: Add support for XDR decoding POSIX draft ACLs
NFSD: Add support for POSIX draft ACLs for file creation
NFSD: Add POSIX draft ACL support to the NFSv4 SETATTR operation
Documentation/netlink/specs/nfsd.yaml | 5 +
Documentation/sunrpc/xdr/nfs4_1.x | 61 ++++
fs/lockd/svc.c | 6 +-
fs/lockd/svclock.c | 4 -
fs/locks.c | 17 +-
fs/nfs/callback.c | 10 +-
fs/nfsd/Kconfig | 19 ++
fs/nfsd/Makefile | 10 +-
fs/nfsd/acl.h | 1 +
fs/nfsd/netlink.c | 5 +-
fs/nfsd/netns.h | 7 +-
fs/nfsd/nfs2acl.c | 2 +-
fs/nfsd/nfs4acl.c | 17 +-
fs/nfsd/nfs4idmap.c | 52 ++-
fs/nfsd/nfs4proc.c | 265 ++++++++++++---
fs/nfsd/nfs4state.c | 52 +--
fs/nfsd/nfs4xdr.c | 363 ++++++++++++++++++++-
fs/nfsd/nfs4xdr_gen.c | 351 ++++++++++++++++++--
fs/nfsd/nfs4xdr_gen.h | 12 +-
fs/nfsd/nfsctl.c | 7 +
fs/nfsd/nfsd.h | 24 +-
fs/nfsd/nfsproc.c | 2 +-
fs/nfsd/nfssvc.c | 64 +++-
fs/nfsd/state.h | 5 +
fs/nfsd/trace.h | 54 +++
fs/nfsd/vfs.c | 34 +-
fs/nfsd/vfs.h | 3 +-
fs/nfsd/xdr4.h | 7 +
include/linux/nfs4.h | 4 +
include/linux/sunrpc/svc.h | 13 +-
include/linux/sunrpc/svcsock.h | 2 +-
include/linux/sunrpc/xdrgen/_builtins.h | 80 ++++-
include/linux/sunrpc/xdrgen/nfs4_1.h | 112 ++++++-
include/uapi/linux/nfs.h | 2 +-
include/uapi/linux/nfsd_netlink.h | 1 +
net/sunrpc/auth_gss/gss_rpc_xdr.c | 82 ++++-
net/sunrpc/svc.c | 216 +++++++-----
net/sunrpc/svc_xprt.c | 51 ++-
tools/net/sunrpc/xdrgen/README | 2 -
tools/net/sunrpc/xdrgen/generators/__init__.py | 5 +-
tools/net/sunrpc/xdrgen/generators/enum.py | 9 +-
tools/net/sunrpc/xdrgen/generators/passthru.py | 26 ++
tools/net/sunrpc/xdrgen/generators/program.py | 38 ++-
tools/net/sunrpc/xdrgen/generators/typedef.py | 8 +-
tools/net/sunrpc/xdrgen/generators/union.py | 115 +++++--
tools/net/sunrpc/xdrgen/grammars/xdr.lark | 10 +-
tools/net/sunrpc/xdrgen/subcmds/declarations.py | 28 +-
tools/net/sunrpc/xdrgen/subcmds/definitions.py | 31 +-
tools/net/sunrpc/xdrgen/subcmds/lint.py | 25 +-
tools/net/sunrpc/xdrgen/subcmds/source.py | 51 ++-
.../xdrgen/templates/C/enum/declaration/enum.j2 | 1 -
.../sunrpc/xdrgen/templates/C/enum/decoder/enum.j2 | 11 +
.../xdrgen/templates/C/enum/decoder/enum_be.j2 | 20 ++
.../xdrgen/templates/C/enum/definition/close.j2 | 1 +
.../xdrgen/templates/C/enum/definition/close_be.j2 | 1 +
.../xdrgen/templates/C/passthru/definition.j2 | 3 +
.../sunrpc/xdrgen/templates/C/passthru/source.j2 | 3 +
.../xdrgen/templates/C/program/decoder/argument.j2 | 4 +
.../templates/C/program/definition/program.j2 | 5 +
.../xdrgen/templates/C/program/encoder/result.j2 | 6 +
.../xdrgen/templates/C/program/maxsize/max_args.j2 | 3 +
.../sunrpc/xdrgen/templates/C/source_top/client.j2 | 1 -
.../xdrgen/templates/C/union/decoder/bool_spec.j2 | 7 +
.../xdrgen/templates/C/union/definition/close.j2 | 1 +
.../xdrgen/templates/C/union/encoder/bool_spec.j2 | 7 +
tools/net/sunrpc/xdrgen/xdr_ast.py | 49 ++-
tools/net/sunrpc/xdrgen/xdr_parse.py | 138 ++++++++
tools/net/sunrpc/xdrgen/xdrgen | 8 +-
68 files changed, 2267 insertions(+), 372 deletions(-)
create mode 100644 tools/net/sunrpc/xdrgen/generators/passthru.py
create mode 100644 tools/net/sunrpc/xdrgen/templates/C/passthru/definition.j2
create mode 100644 tools/net/sunrpc/xdrgen/templates/C/passthru/source.j2
create mode 100644 tools/net/sunrpc/xdrgen/templates/C/program/definition/program.j2
create mode 100644 tools/net/sunrpc/xdrgen/templates/C/program/maxsize/max_args.j2
create mode 100644 tools/net/sunrpc/xdrgen/templates/C/union/decoder/bool_spec.j2
create mode 100644 tools/net/sunrpc/xdrgen/templates/C/union/encoder/bool_spec.j2
Powered by blists - more mailing lists