Hi Linus- The following changes since commit 58720809f52779dc0f08e53e54b014209d13eebb: Linux 6.6-rc6 (2023-10-15 13:34:39 -0700) are available in the Git repository at: https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git tags/nfsd-6.7 for you to fetch changes up to 3fd2ca5be07f6a43211591a45b43df9e7b6eba00: svcrdma: Fix tracepoint printk format (2023-10-16 12:44:40 -0400) ---------------------------------------------------------------- NFSD 6.7 Release Notes This release completes the SunRPC thread scheduler work that was begun in v6.6. The scheduler can now find an svc thread to wake in constant time and without a list walk. Thanks again to Neil Brown for this overhaul. Lorenzo Bianconi contributed infrastructure for a netlink-based NFSD control plane. The long-term plan is to provide the same functionality as found in /proc/fs/nfsd, plus some interesting additions, and then migrate the NFSD user space utilities to netlink. A long series to overhaul NFSD's NFSv4 operation encoding was applied in this release. The goals are to bring this family of encoding functions in line with the matching NFSv4 decoding functions and with the NFSv2 and NFSv3 XDR functions, preparing the way for better memory safety and maintainability. A further improvement to NFSD's write delegation support was contributed by Dai Ngo. This adds a CB_GETATTR callback, enabling the server to retrieve cached size and mtime data from clients holding write delegations. If the server can retrieve this information, it does not have to recall the delegation in some cases. The usual panoply of bug fixes and minor improvements round out this release. As always I am grateful to all contributors, reviewers, and testers. ---------------------------------------------------------------- Alexander Aring (4): lockd: introduce safe async lock op lockd: don't call vfs_lock_file() for pending requests lockd: fix race in async lock request handling lockd: add doc to enable EXPORT_OP_ASYNC_LOCK Chuck Lever (92): SUNRPC: Clean up bc_svc_process() tools: ynl: Add source files for nfsd netlink protocol SUNRPC: Remove BUG_ON call sites NFSD: Add simple u32, u64, and bool encoders NFSD: Rename nfsd4_encode_bitmap() NFSD: Clean up nfsd4_encode_setattr() NFSD: Add struct nfsd4_fattr_args NFSD: Add nfsd4_encode_fattr4__true() NFSD: Add nfsd4_encode_fattr4__false() NFSD: Add nfsd4_encode_fattr4_supported_attrs() NFSD: Add nfsd4_encode_fattr4_type() NFSD: Add nfsd4_encode_fattr4_fh_expire_type() NFSD: Add nfsd4_encode_fattr4_change() NFSD: Add nfsd4_encode_fattr4_size() NFSD: Add nfsd4_encode_fattr4_fsid() NFSD: Add nfsd4_encode_fattr4_lease_time() NFSD: Add nfsd4_encode_fattr4_rdattr_error() NFSD: Add nfsd4_encode_fattr4_aclsupport() NFSD: Add nfsd4_encode_nfsace4() NFSD: Add nfsd4_encode_fattr4_acl() NFSD: Add nfsd4_encode_fattr4_filehandle() NFSD: Add nfsd4_encode_fattr4_fileid() NFSD: Add nfsd4_encode_fattr4_files_avail() NFSD: Add nfsd4_encode_fattr4_files_free() NFSD: Add nfsd4_encode_fattr4_files_total() NFSD: Add nfsd4_encode_fattr4_fs_locations() NFSD: Add nfsd4_encode_fattr4_maxfilesize() NFSD: Add nfsd4_encode_fattr4_maxlink() NFSD: Add nfsd4_encode_fattr4_maxname() NFSD: Add nfsd4_encode_fattr4_maxread() NFSD: Add nfsd4_encode_fattr4_maxwrite() NFSD: Add nfsd4_encode_fattr4_mode() NFSD: Add nfsd4_encode_fattr4_numlinks() NFSD: Add nfsd4_encode_fattr4_owner() NFSD: Add nfsd4_encode_fattr4_owner_group() NFSD: Add nfsd4_encode_fattr4_rawdev() NFSD: Add nfsd4_encode_fattr4_space_avail() NFSD: Add nfsd4_encode_fattr4_space_free() NFSD: Add nfsd4_encode_fattr4_space_total() NFSD: Add nfsd4_encode_fattr4_space_used() NFSD: Add nfsd4_encode_fattr4_time_access() NFSD: Add nfsd4_encode_fattr4_time_create() NFSD: Add nfsd4_encode_fattr4_time_delta() NFSD: Add nfsd4_encode_fattr4_time_metadata() NFSD: Add nfsd4_encode_fattr4_time_modify() NFSD: Add nfsd4_encode_fattr4_mounted_on_fileid() NFSD: Add nfsd4_encode_fattr4_fs_layout_types() NFSD: Add nfsd4_encode_fattr4_layout_types() NFSD: Add nfsd4_encode_fattr4_layout_blksize() NFSD: Add nfsd4_encode_fattr4_suppattr_exclcreat() NFSD: Add nfsd4_encode_fattr4_sec_label() NFSD: Add nfsd4_encode_fattr4_xattr_support() NFSD: Copy FATTR4 bit number definitions from RFCs NFSD: Use a bitmask loop to encode FATTR4 results NFSD: Rename nfsd4_encode_fattr() NFSD: Add nfsd4_encode_count4() NFSD: Clean up nfsd4_encode_stateid() NFSD: Make @lgp parameter of ->encode_layoutget a const pointer NFSD: Clean up nfsd4_encode_layoutget() NFSD: Clean up nfsd4_encode_layoutcommit() NFSD: Clean up nfsd4_encode_layoutreturn() NFSD: Make @gdev parameter of ->encode_getdeviceinfo a const pointer NFSD: Clean up nfsd4_encode_getdeviceinfo() NFSD: Remove a layering violation when encoding lock_denied NFSD: Add nfsd4_encode_lock_owner4() NFSD: Refactor nfsd4_encode_lock_denied() NFSD: Add nfsd4_encode_open_read_delegation4() NFSD: Add nfsd4_encode_open_write_delegation4() NFSD: Add nfsd4_encode_open_none_delegation4() NFSD: Add nfsd4_encode_open_delegation4() NFSD: Clean up nfsd4_encode_open() NFSD: Add a utility function for encoding sessionid4 objects NFSD: Add nfsd4_encode_channel_attr4() NFSD: Restructure nfsd4_encode_create_session() NFSD: Clean up nfsd4_encode_sequence() NFSD: Rename nfsd4_encode_dirent() NFSD: Clean up nfsd4_encode_rdattr_error() NFSD: Add an nfsd4_encode_nfs_cookie4() helper NFSD: Clean up nfsd4_encode_entry4() NFSD: Clean up nfsd4_encode_readdir() NFSD: Clean up nfsd4_encode_access() NFSD: Clean up nfsd4_do_encode_secinfo() NFSD: Clean up nfsd4_encode_exchange_id() NFSD: Clean up nfsd4_encode_test_stateid() NFSD: Clean up nfsd4_encode_copy() NFSD: Clean up nfsd4_encode_copy_notify() NFSD: Clean up nfsd4_encode_offset_status() NFSD: Clean up nfsd4_encode_seek() NFSD: Rewrite synopsis of nfsd_percpu_counters_init() NFSD: Fix frame size warning in svc_export_parse() svcrdma: Drop connection after an RDMA Read error svcrdma: Fix tracepoint printk format Dai Ngo (4): NFSD: initialize copy->cp_clp early in nfsd4_copy for use by trace point NFSD: add trace points to track server copy progress NFSD: add support for CB_GETATTR callback NFSD: handle GETATTR conflict with write delegation KaiLong Wang (3): NFSD: Clean up errors in stats.c nfsd: Clean up errors in nfs4state.c nfsd: Clean up errors in nfs3proc.c Kinglong Mee (1): nfs: fix the typo of rfc number about xattr in NFSv4 Lorenzo Bianconi (2): NFSD: introduce netlink stubs NFSD: add rpc_status netlink support NeilBrown (18): SUNRPC: move all of xprt handling into svc_xprt_handle() SUNRPC: rename and refactor svc_get_next_xprt() SUNRPC: integrate back-channel processing with svc_recv() lockd: hold a reference to nlmsvc_serv while stopping the thread. SUNRPC: change how svc threads are asked to exit. SUNRPC: add list of idle threads SUNRPC: discard SP_CONGESTED llist: add interface to check if a node is on a list. SUNRPC: change service idle list to be an llist llist: add llist_del_first_this() lib: add light-weight queuing mechanism. SUNRPC: rename some functions from rqst_ to svc_thread_ SUNRPC: only have one thread waking up at a time SUNRPC: use lwq for sp_sockets - renamed to sp_xprts SUNRPC: change sp_nrthreads to atomic_t SUNRPC: discard sp_lock SUNRPC: change the back-channel queue to lwq NFSD: simplify error paths in nfsd_svc() Sicong Huang (1): NFSD: clean up alloc_init_deleg() Trond Myklebust (2): nfsd: Handle EOPENSTALE correctly in the filecache nfsd: Don't reset the write verifier on a commit EAGAIN Documentation/filesystems/nfs/exporting.rst | 7 + Documentation/netlink/specs/nfsd.yaml | 89 +++ fs/lockd/svc.c | 7 +- fs/lockd/svclock.c | 43 +- fs/locks.c | 12 +- fs/nfs/callback.c | 46 +- fs/nfsd/Makefile | 3 +- fs/nfsd/blocklayoutxdr.c | 6 +- fs/nfsd/blocklayoutxdr.h | 4 +- fs/nfsd/export.c | 32 +- fs/nfsd/export.h | 4 +- fs/nfsd/filecache.c | 27 +- fs/nfsd/flexfilelayoutxdr.c | 6 +- fs/nfsd/flexfilelayoutxdr.h | 4 +- fs/nfsd/netlink.c | 32 ++ fs/nfsd/netlink.h | 22 + fs/nfsd/nfs3proc.c | 5 +- fs/nfsd/nfs4callback.c | 97 +++- fs/nfsd/nfs4layouts.c | 6 +- fs/nfsd/nfs4proc.c | 32 +- fs/nfsd/nfs4state.c | 156 +++++- fs/nfsd/nfs4xdr.c | 2700 ++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------- fs/nfsd/nfsctl.c | 203 +++++++ fs/nfsd/nfsd.h | 17 + fs/nfsd/nfsfh.c | 2 +- fs/nfsd/nfsfh.h | 3 +- fs/nfsd/nfssvc.c | 42 +- fs/nfsd/pnfs.h | 6 +- fs/nfsd/state.h | 27 +- fs/nfsd/stats.c | 4 +- fs/nfsd/stats.h | 18 +- fs/nfsd/trace.h | 87 +++ fs/nfsd/vfs.c | 61 ++- fs/nfsd/vfs.h | 4 +- fs/nfsd/xdr4.h | 154 +++++- fs/nfsd/xdr4cb.h | 18 + include/linux/exportfs.h | 14 + include/linux/iversion.h | 2 +- include/linux/llist.h | 46 ++ include/linux/lockd/lockd.h | 2 +- include/linux/lwq.h | 124 +++++ include/linux/nfs4.h | 262 ++++++--- include/linux/sunrpc/svc.h | 45 +- include/linux/sunrpc/svc_xprt.h | 2 +- include/linux/sunrpc/xprt.h | 3 +- include/trace/events/rpcrdma.h | 10 +- include/trace/events/sunrpc.h | 1 - include/uapi/linux/nfsd_netlink.h | 39 ++ lib/Kconfig | 5 + lib/Makefile | 2 +- lib/llist.c | 28 + lib/lwq.c | 158 ++++++ net/sunrpc/backchannel_rqst.c | 13 +- net/sunrpc/svc.c | 155 +++--- net/sunrpc/svc_xprt.c | 238 ++++---- net/sunrpc/xprtrdma/backchannel.c | 6 +- net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 3 +- tools/net/ynl/Makefile.deps | 1 + tools/net/ynl/generated/Makefile | 2 +- tools/net/ynl/generated/nfsd-user.c | 95 ++++ tools/net/ynl/generated/nfsd-user.h | 33 ++ 61 files changed, 3531 insertions(+), 1744 deletions(-) create mode 100644 Documentation/netlink/specs/nfsd.yaml create mode 100644 fs/nfsd/netlink.c create mode 100644 fs/nfsd/netlink.h create mode 100644 include/linux/lwq.h create mode 100644 include/uapi/linux/nfsd_netlink.h create mode 100644 lib/lwq.c create mode 100644 tools/net/ynl/generated/nfsd-user.c create mode 100644 tools/net/ynl/generated/nfsd-user.h -- Chuck Lever