mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Chuck Lever <cel@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Jeff Layton <jlayton@kernel.org>, <linux-nfs@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: [GIT PULL] NFSD changes for v7.4
Date: Thu, 22 Oct 2026 15:15:30 -0400	[thread overview]
Message-ID: <20261022191536.3094786-1-cel@kernel.org> (raw)

The following changes since commit a90ee4305c4a5df72c11b31dacfdc76e00fcf78a:

  Linux 7.3-rc6 (2026-10-04 13:45:25 -0700)

are available in the Git repository at:

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

for you to fetch changes up to eafb6de800781f0a1be5cdd98d150620041d8b27:

  SUNRPC: use assign_bit() where applicable (2026-10-11 23:13:07 -0400)

----------------------------------------------------------------
NFSD 7.4 Release Notes

Jeff Layton extended the netlink listener-set operation so that a
management daemon can register NFSD's programs with rpcbind itself.
This prevents an unresponsive rpcbind from stalling NFSD adminis-
tration for a minute at a time.

Bulk delegation recall now adjusts the number of delegations it
wants returned, based on memory pressure. The previous mechanism
was spec-conformant, but it requested all delegations to be
returned at once. Clients are free to return few or none in such
cases, but requesting smaller batches of delegations is more
neighborly.

In preparation for handling TLS KeyUpdate, the server's TCP receive
path has been reworked to handle control records. In the process,
the use of sock_recvmsg was replaced with ->read_sock, which contends
less with other holders of the socket lock.

NFSv2 XDR code is now generated by xdrgen, which mechanically
generates the encoders and decoders from the RPC language
specification for the protocol. Replacing hand-built XDR code
makes prototyping new protocol elements faster, reduces errors, and
improves memory safety. Replacement of XDR code for newer NFS
versions will continue in subsequent releases of NFSD.

The remaining bulk of changes in v7.4 is bug fixes, clean-ups, and
small optimizations. Sincere thanks to all contributors, reviewers,
testers, and bug reporters who participated in the v7.4 NFSD
development cycle.

----------------------------------------------------------------
Aldo Ariel Panzardo (5):
      nfsd: propagate SETXATTR value decode errors
      NFSD: copy SETXATTR data from all XDR buffer segments
      nfsd: zero NFSv4 COMPOUND tag padding
      nfsd: clear XDR padding in GETXATTR replies
      nfsd: use xdr_encode_opaque_fixed for all GETXATTR fragments

Ameer Hamza (4):
      nfsd: fix race between client_info_show() and free_client()
      sunrpc: treat empty auth.unix.gid replies as negative entries
      sunrpc: honor the netlink unix_gid NEGATIVE flag
      nfsd: don't modify a session slot when replaying its cached reply

Cen Zhang (Microsoft Security FORGE Labs) (1):
      nfsd: hold cl_lock in client_has_openowners()

Chris Mason (1):
      sunrpc: pin gss module across auth_domain RCU free

Chuck Lever (124):
      NFSD: Move XDR encoding helpers out of xdr4.h
      NFSD: Move pre-xdr'ed status codes out of nfsd.h
      NFSD: Remove two unused NFSv4 constants
      NFSD: Relocate NFSv4-internal constants to state.h
      NFSD: Evacuate NFSv4 entry-point prototypes from nfsd.h
      NFSD: Move nfsd_v4client() out of nfsd.h
      NFSD: Map flex file layout IDs through the request's user namespace
      NFS: Add linux/nfs_fh.h
      lockd: Switch linux/nfs.h to linux/nfs_fh.h
      NFSD: Use struct knfsd_fh in struct pnfs_ff_layout
      nfs_common: Remove unused nfs_ssc_client_ops infrastructure
      NFSD: Hoist nfs42_ssc_open() into fs/nfs_common/nfs_ssc.c
      nfs_common: Synchronize access to the SSC client ops table
      NFSD: Split linux/nfs_ssc.h
      NFS: Move definition of enum nfs3_stable_how
      NFSD: Replace nfsd_write()'s "stable" argument with "iocb_flags"
      NFSD: Move the RPC program definition for LOCALIO
      nfs_common: Remove "#include <linux/nfs.h>" from linux/nfslocalio.h
      NFSD: Tighten header includes in localio.c
      NFSD: Name the fh_maxsize value that carries no NFS version
      NFSD: Don't apply NFS version-specific behavior to LOCALIO requests
      NFSD: Budget the CB_SEQUENCE opcode and referring call array count
      NFSD: Budget the CB_RECALL truncate field
      NFSD: Budget the CB_LAYOUTRECALL recall stateid
      NFSD: Budget the CB_OFFLOAD opcode
      NFSD: Budget the CB_NOTIFY_LOCK opcode
      NFSD: Budget the CB_RECALL_ANY opcode
      NFSD: Correct locking documentation for delegation sc_status
      NFSD: Destroy a recalled delegation the client does not hold
      NFSD: Send referring calls with CB_RECALL
      NFSD: Point contributors and sashiko.dev to the nfsd-testing branch
      SUNRPC: Do not credit control-record octets to the RPC stream
      SUNRPC: Reject a TLS alert record that is not two octets
      SUNRPC: Treat every TLS error alert as fatal
      SUNRPC: Resume receiving after a TLS control record
      NFSD: Replace NFS3_ACCESS_FULL in nfsd4_access()
      NFSD: Move version-specific ACCESS maps into per-version code
      NFSD: Make the write verifier reset helper available outside vfs.c
      NFSD: Move NFSv4-specific CLONE logic into nfsd4_clone()
      NFSD: Remove xdr-related headers from fs/nfsd/vfs.c
      SUNRPC: Reject a socket that already has an svc_sock attached
      NFSD: Fail a pool_threads read whose reply does not fit
      nfsd: set op->status when an operation's header cannot be encoded
      NFSD: Do not send CB_RECALL_ANY to NFSv4.0 clients
      NFSD: Count the delegations held by each client
      NFSD: Name directory delegations in the CB_RECALL_ANY type mask
      NFSD: Send a meaningful CB_RECALL_ANY keep count
      NFSD: Count delegations per network namespace
      NFSD: Give delegations their own state shrinker
      NFSD: Pace the state shrinker's scan requests
      NFSD: Apportion CB_RECALL_ANY recalls among clients
      NFSD: Move the nfs3.h include out of nfsd.h
      NFSD: Include <linux/nfs_fh.h> where struct nfs_fh is used
      NFSD: Clean up header guards in fs/nfsd/xdr.h
      NFSD: Resolve the recall-any mask names in the trace format
      SUNRPC: Separate the TLS control-record receive from its policy
      SUNRPC: Close the transport on an unhandled TLS record type
      SUNRPC: Flush a received record's pages once it is complete
      SUNRPC: Receive RPC records with ->read_sock
      SUNRPC: Bypass sock_recvmsg() for the TLS control-record receive
      lockd: Fix use-after-free in nlmsvc_retry_blocked
      lockd: Serialize block retries against host teardown
      NFSD: Fix out-of-bounds read in the rpc_status dump
      NFSD: Fix POSIX ACL leak in unexecuted NFSv4 COMPOUND operations
      NFS: Import NFS3ERR definitions
      NFSD: Rework be32 nfserr definitions
      NFSD: Replace the use of include/trace/misc/nfs.h
      svcrdma: Grant credits from the clamped sc_max_requests
      svcrdma: Clear XPT_DATA when the last receive context is consumed
      SUNRPC: Skip xpt_reserved accounting for non-UDP transports
      NFSD: Return NFSERR_ISDIR for NFSv2 READ and WRITE on a non-regular file
      NFSD: Don't complete a cld upcall the daemon has not read
      NFSD: Move the cld upcall message out of the caller's stack frame
      NFSD: Complete a cld upcall when copying its reply fails
      NFSD: Reject an oversized principal hash from nfsdcld
      pnfs/blocklayout: Complete a device upcall only on its own reply
      NFSD: Set nn->cld_net before registering the cld pipe
      NFSD: Complete a cld upcall when the daemon closes the pipe
      pnfs/blocklayout: Complete a device upcall when the pipe is closed
      SUNRPC: Copy the deferred RPC Call from the head buffer
      NFSD: return NFS4ERR_EXIST for a guarded OPEN of a non-regular object
      SUNRPC: Carry a generated-codec context pointer in struct xdr_stream
      SUNRPC: Bind the svc_rqst to its XDR streams
      SUNRPC: Add svcxdr_encode_opaque_payload()
      xdrgen: Pass the containing struct name to member codec emitters
      xdrgen: Add a "pragma pages" directive
      SUNRPC: Add svcxdr_decode_opaque_payload()
      xdrgen: Extend the pages directive to page-resident arguments
      xdrgen: Add hook-driven aggregate codec for variable-length arrays
      xdrgen: Extend the aggregate codec to optional-data list members
      xdrgen: Stream optional-data aggregate lists during encode
      xdrgen: Reject a "pragma pages" union arm declared as an opaque
      xdrgen: Report unsupported client-side directives without a traceback
      xdrgen: Document that aggregate members of a struct share an element type
      xdrgen: Update the aggregate_members comment for optional-data lists
      NFSD: map fh_verify() status codes for NFS_ACLv2 replies
      NFSD: map fh_verify() status codes for NFS_ACLv3 replies
      Documentation: Add the RPC language description of NFSv2
      NFSD: Add infrastructure for generating NFSv2 XDR encoders and decoders
      NFSD: Use xdrgen-generated NFSv2 protocol definitions
      NFSD: Remove '#include "xdr.h"' from fs/nfsd/xdr3.h
      NFSD: Relocate the NFSv2 XDR storage union into nfsproc.c
      NFSD: Use xdrgen XDR functions for the NFSv2 NULL procedure
      NFSD: Use xdrgen XDR functions for NFSv2 GETATTR procedure
      NFSD: Use xdrgen XDR functions for NFSv2 SETATTR procedure
      NFSD: Use xdrgen XDR functions for the NFSv2 ROOT procedure
      NFSD: Use xdrgen XDR functions for the NFSv2 LOOKUP procedure
      NFSD: Use xdrgen XDR functions for NFSv2 READLINK procedure
      NFSD: Use xdrgen XDR functions for NFSv2 READ procedure
      NFSD: Use xdrgen XDR functions for the NFSv2 WRITECACHE procedure
      NFSD: Use xdrgen XDR functions for NFSv2 WRITE procedure
      NFSD: Refactor nfsd_proc_create()
      NFSD: Use xdrgen XDR functions for NFSv2 CREATE procedure
      NFSD: Use xdrgen XDR functions for the NFSv2 REMOVE procedure
      NFSD: Use xdrgen XDR functions for the NFSv2 RENAME procedure
      NFSD: Use xdrgen XDR functions for the NFSv2 LINK procedure
      NFSD: Use xdrgen XDR functions for NFSv2 SYMLINK procedure
      NFSD: Use xdrgen XDR functions for NFSv2 MKDIR procedure
      NFSD: Use xdrgen XDR functions for NFSv2 RMDIR procedure
      NFSD: Use xdrgen XDR functions for the NFSv2 STATFS procedure
      NFSD: Use xdrgen XDR functions for NFSv2 READDIR arguments
      NFSD: Add a streaming directory reader
      NFSD: Refactor NFSv2 directory cookie encoding
      NFSD: Use xdrgen XDR functions for NFSv2 READDIR results

David Flynn (1):
      nfsd: fetch direct I/O alignment for files handed to the filecache

Jeff Layton (23):
      nfsd: pass caller-provided attrmask storage into nfsd4_setup_notify_entry4()
      nfsd: back CB_NOTIFY notify_mask words with per-delegation storage
      NFSD: cap the number of listeners accepted in listener_set
      NFSD: validate transport name in listener_set before serv creation
      SUNRPC: keep the first error in svc_register()
      SUNRPC: bound the local rpcbind client timeout to 1s
      NFSD: report listener creation failures through extack
      SUNRPC: report local rpcbind calls that get no answer
      SUNRPC: stop svc_register() once rpcbind stops answering
      SUNRPC: stop the svc_unregister() sweep once rpcbind stops answering
      SUNRPC: stop unregistering listeners once rpcbind stops answering
      NFSD: stop registering with rpcbind after a failure in listener_set
      selftests/nfsd: exercise listener_set request validation
      selftests/nfsd: add a per-netns rpcbind stub and the listener round-trips
      selftests/nfsd: check that listener_set asks rpcbind once
      selftests/nfsd: check that listener removal asks rpcbind once
      nfsd: don't offer flexfiles layouts when NFSv3 isn't being served
      nfsd: shorten extack string returned with dodgy listener
      SUNRPC: allow a service to opt out of rpcbind registration
      NFSD: add a userspace-rpcbind flag to listener_set
      NFSD: honour the userspace-rpcbind flag in listener_set
      NFSD: report registerable programs in the listener_set reply
      selftests/nfsd: exercise the userspace-rpcbind listener_set flag

Jérémy Jean (2):
      nfsd: preflight SEQUENCE replies before accepting a slot
      SUNRPC: fix oversized GSS proxy token copy

Karl Mehltretter (2):
      NFSD: docs: Fix pNFS SCSI Kconfig symbol
      svcrdma: Fix svc_rdma_recv_cid_init() kernel-doc

NeilBrown (17):
      nfsd: honour client-provided attributes for NFS4_CREATE_EXCLUSIVE4_1
      nfsd: move check_nfsd_access() call into nfsd_cross_mnt()
      nfsd: correctly handle CREATE of mounted-on files
      nfsd: replace fh_fill_both_attrs() with fh_fill_post_noop()
      nfsd: move fh_want_write() after preamble in nfsd4_create_file()
      nfsd: move more nfs-specific code into preamble of nfsd4_create_file()
      nfsd: remove subtlety from nfsd4_create_file()
      nfsd: in nfsd4_create_file() let VFS report if file was created.
      nfsd: nfsd4_create_file(): Move NFSD_MAY_CREATE check earlier
      nfsd: fh_want_write) failure need not be immediately fatal for nfsd4_create_file()
      nfsd: (almost) always open file in nfsd4_create_file()
      nfsd: reduce range of directory lock in nfsd4_create_file()
      nfsd: open-code nfsd4_vfs_create() into nfsd4_create_file()
      nfsd: move some code out of the d_really_is_negative() branch in nfsd4_create_file()
      nfsd: reduce want-write range in nfsd4_create_file()
      nfsd: move v0 checking out of nfsd_check_obj_isreg()
      nfsd: separate out VFS-specific code from nfsd4_create_file()

Peng Fan (1):
      SUNRPC: use assign_bit() where applicable

Wentao Liang (1):
      nfsd: Fix id-to-name cache entry leak in idtoname_parse()

Zhiling Zou (1):
      SUNRPC: trace an accepted transport before publishing it

Zijing Yin (1):
      SUNRPC: fix netns use-after-free in write_gssp()

 Documentation/admin-guide/nfs/pnfs-scsi-server.rst |    2 +-
 Documentation/netlink/specs/nfsd.yaml              |   55 +-
 Documentation/sunrpc/xdr/nfs2.x                    |  254 +++
 MAINTAINERS                                        |    4 +-
 fs/lockd/svc.c                                     |    1 -
 fs/lockd/svclock.c                                 |   33 +-
 fs/lockd/trace.h                                   |    1 -
 fs/lockd/xdr.h                                     |    2 +-
 fs/namei.c                                         |    2 +
 fs/nfs/blocklayout/blocklayout.h                   |    5 -
 fs/nfs/blocklayout/rpc_pipefs.c                    |   79 +-
 fs/nfs/netns.h                                     |    5 +-
 fs/nfs/nfs4file.c                                  |    1 +
 fs/nfs/super.c                                     |   25 -
 fs/nfs_common/common.c                             |    5 +-
 fs/nfs_common/nfs_ssc.c                            |  126 +-
 fs/nfsd/Makefile                                   |   15 +-
 fs/nfsd/blocklayout.c                              |    1 +
 fs/nfsd/blocklayoutxdr.c                           |   11 +
 fs/nfsd/export.c                                   |    8 +-
 fs/nfsd/export.h                                   |    3 +-
 fs/nfsd/filecache.c                                |    5 +-
 fs/nfsd/flexfilelayout.c                           |   24 +-
 fs/nfsd/flexfilelayoutxdr.c                        |    9 +-
 fs/nfsd/flexfilelayoutxdr.h                        |    8 +-
 fs/nfsd/localio.c                                  |   10 +-
 fs/nfsd/lockd.c                                    |    5 +-
 fs/nfsd/netlink.c                                  |    5 +-
 fs/nfsd/netns.h                                    |   17 +-
 fs/nfsd/nfs2acl.c                                  |   66 +-
 fs/nfsd/nfs2xdr_gen.c                              | 1079 ++++++++++++
 fs/nfsd/nfs2xdr_gen.h                              |   46 +
 fs/nfsd/nfs3acl.c                                  |   16 +
 fs/nfsd/nfs3proc.c                                 |   79 +-
 fs/nfsd/nfs3xdr.c                                  |    6 +
 fs/nfsd/nfs4acl.c                                  |    1 +
 fs/nfsd/nfs4callback.c                             |    8 +-
 fs/nfsd/nfs4ctl.h                                  |   83 +
 fs/nfsd/nfs4idmap.c                                |    5 +-
 fs/nfsd/nfs4layouts.c                              |    5 +-
 fs/nfsd/nfs4proc.c                                 |  475 +++---
 fs/nfsd/nfs4recover.c                              |   92 +-
 fs/nfsd/nfs4state.c                                |  587 ++++++-
 fs/nfsd/nfs4xdr.c                                  |  227 ++-
 fs/nfsd/nfscache.c                                 |    1 +
 fs/nfsd/nfsctl.c                                   |  323 +++-
 fs/nfsd/nfsd.h                                     |  243 +--
 fs/nfsd/nfserr.h                                   |  159 ++
 fs/nfsd/nfsfh.c                                    |   73 +-
 fs/nfsd/nfsfh.h                                    |   33 +-
 fs/nfsd/nfsproc.c                                  | 1597 ++++++++++++------
 fs/nfsd/nfssvc.c                                   |   74 +-
 fs/nfsd/nfsxdr.c                                   |  606 ++-----
 fs/nfsd/state.h                                    |   46 +-
 fs/nfsd/trace.h                                    |   45 +-
 fs/nfsd/vfs.c                                      |  537 +++---
 fs/nfsd/vfs.h                                      |   79 +-
 fs/nfsd/xdr.h                                      |  173 +-
 fs/nfsd/xdr3.h                                     |    5 +-
 fs/nfsd/xdr4.h                                     |  156 +-
 fs/nfsd/xdr4cb.h                                   |   20 +-
 include/linux/nfs.h                                |   55 +-
 include/linux/nfs3.h                               |   43 +
 include/linux/nfs4.h                               |    6 +
 include/linux/nfs_common.h                         |    4 +-
 include/linux/nfs_fh.h                             |   63 +
 include/linux/nfs_ssc.h                            |   69 +-
 include/linux/nfsd_ssc.h                           |   38 +
 include/linux/nfslocalio.h                         |   11 +-
 include/linux/sunrpc/clnt.h                        |    3 +-
 include/linux/sunrpc/svc.h                         |   95 +-
 include/linux/sunrpc/svc_rdma.h                    |    2 +-
 include/linux/sunrpc/svc_xprt.h                    |    5 +-
 include/linux/sunrpc/xdr.h                         |    1 +
 include/linux/sunrpc/xdrgen/_defs.h                |   34 +
 include/linux/sunrpc/xdrgen/nfs2.h                 |  298 ++++
 include/trace/misc/nfs.h                           |   13 +-
 include/uapi/linux/nfsd_netlink.h                  |   20 +
 net/sunrpc/auth_gss/svcauth_gss.c                  |   29 +-
 net/sunrpc/rpcb_clnt.c                             |   34 +-
 net/sunrpc/svc.c                                   |   72 +-
 net/sunrpc/svc_xprt.c                              |   83 +-
 net/sunrpc/svcauth_unix.c                          |    9 +
 net/sunrpc/svcsock.c                               |  508 +++---
 net/sunrpc/xdr.c                                   |    3 +
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c            |   18 +-
 net/sunrpc/xprtrdma/svc_rdma_transport.c           |    3 +-
 tools/net/sunrpc/xdrgen/README                     |  154 +-
 tools/net/sunrpc/xdrgen/generators/pointer.py      |   68 +-
 tools/net/sunrpc/xdrgen/generators/struct.py       |  203 ++-
 tools/net/sunrpc/xdrgen/generators/union.py        |   69 +-
 tools/net/sunrpc/xdrgen/grammars/xdr.lark          |    2 +
 tools/net/sunrpc/xdrgen/subcmds/source.py          |   19 +-
 .../templates/C/pointer/decoder/pages_opaque.j2    |    6 +
 .../templates/C/pointer/definition/pages_opaque.j2 |    5 +
 .../templates/C/pointer/encoder/pages_opaque.j2    |   10 +
 .../C/struct/declaration/aggregate_hooks.j2        |   14 +
 .../templates/C/struct/decoder/aggregate_array.j2  |   33 +
 .../C/struct/decoder/aggregate_optional.j2         |   10 +
 .../templates/C/struct/decoder/pages_opaque.j2     |    6 +
 .../templates/C/struct/definition/pages_opaque.j2  |    5 +
 .../templates/C/struct/encoder/aggregate_array.j2  |   37 +
 .../C/struct/encoder/aggregate_optional.j2         |   29 +
 .../templates/C/struct/encoder/pages_opaque.j2     |   10 +
 .../templates/C/union/encoder/pages_opaque.j2      |   10 +
 tools/net/sunrpc/xdrgen/xdr_ast.py                 |  506 ++++++
 tools/testing/selftests/Makefile                   |    1 +
 tools/testing/selftests/nfsd/.gitignore            |    1 +
 tools/testing/selftests/nfsd/Makefile              |    6 +
 tools/testing/selftests/nfsd/config                |   14 +
 .../testing/selftests/nfsd/nfsd_netlink_listener.c | 1721 ++++++++++++++++++++
 tools/testing/selftests/nfsd/settings              |    1 +
 112 files changed, 9312 insertions(+), 2813 deletions(-)
 create mode 100644 Documentation/sunrpc/xdr/nfs2.x
 create mode 100644 fs/nfsd/nfs2xdr_gen.c
 create mode 100644 fs/nfsd/nfs2xdr_gen.h
 create mode 100644 fs/nfsd/nfs4ctl.h
 create mode 100644 fs/nfsd/nfserr.h
 create mode 100644 include/linux/nfs_fh.h
 create mode 100644 include/linux/nfsd_ssc.h
 create mode 100644 include/linux/sunrpc/xdrgen/nfs2.h
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/pointer/decoder/pages_opaque.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/pointer/definition/pages_opaque.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/pointer/encoder/pages_opaque.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/struct/declaration/aggregate_hooks.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/struct/decoder/aggregate_array.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/struct/decoder/aggregate_optional.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/struct/decoder/pages_opaque.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/struct/definition/pages_opaque.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/struct/encoder/aggregate_array.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/struct/encoder/aggregate_optional.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/struct/encoder/pages_opaque.j2
 create mode 100644 tools/net/sunrpc/xdrgen/templates/C/union/encoder/pages_opaque.j2
 create mode 100644 tools/testing/selftests/nfsd/.gitignore
 create mode 100644 tools/testing/selftests/nfsd/Makefile
 create mode 100644 tools/testing/selftests/nfsd/config
 create mode 100644 tools/testing/selftests/nfsd/nfsd_netlink_listener.c
 create mode 100644 tools/testing/selftests/nfsd/settings

                 reply	other threads:[~2026-10-22 19:15 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20261022191536.3094786-1-cel@kernel.org \
    --to=cel@kernel.org \
    --cc=jlayton@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®