[v3,00/32] Possible NFSD patches for v5.8
mbox series

Message ID 20200521141100.3557.17098.stgit@klimt.1015granger.net
Headers show
  • Possible NFSD patches for v5.8
Related show


Chuck Lever May 21, 2020, 2:33 p.m. UTC
I've updated this series to address the WRT15 bug. The bug was due
to an over-aggressive clean-up which unintentionally altered how
XPT_DATA was set in svc_tcp_recvfrom().

To help better expose that kind of change to code inspection, I've
broken out the clean-ups in ("SUNRPC: Refactor svc_recvfrom()") into
patches separate from the change that adds bvecs.

The fixed code has been tested with complete runs of pynfs (both
4.0 and 4.1). No new test failures were observed. I've also run the
cthon locking tests with NFSv3, NFSv4.0, and NFSv4.1 using TCP
without observing any failures.

In addition I've made a small change to the new svcsock tracepoints
to follow the convention of reporting errors via tracepoints whose
name ends in _err, rather than using the same tracepoint to report
both normal progress and an error.

(Normal progress reports are for developers. Such tracepoints would
be enabled only rarely because they fire for every socket receive.
An error tracepoint can be left persistently enabled without causing
a torrent of trace records).

Available to view:

Pull from:
  git://git.linux-nfs.org/projects/cel/cel-2.6.git nfsd-5.8

Highlights of this series:
* Remove serialization of sending RPC/RDMA Replies
* Convert the TCP socket send path to use xdr_buf::bvecs (pre-requisite for RPC-on-TLS)
* Fix svcrdma backchannel sendto return code
* Convert a number of dprintk call sites to use tracepoints
* Fix the "suggest braces around empty body in an 'else' statement" warning

Changes since v2:
* Rebased on v5.7-rc6
* Fixed a logic error that left XPT_DATA unset on return from svc_tcp_recvfrom()
* Broke down "SUNRPC: Refactor svc_recvfrom()" to separate clean ups from logic changes
* Some superfluous clean-ups have been redacted
* Add separate tracepoints for error cases (eg, tcp_recv and tcp_recv_err)

Changes since v1:
* Rebased on v5.7-rc5+
* Re-organized the series so changes interesting to linux-rdma appear together
* Addressed sparse warnings found by the kbuild test robot
* Included an additional minor clean-up: removal of the unused SVCRDMA_DEBUG macro
* Clarified several patch descriptions


Chuck Lever (32):
      SUNRPC: Move xpt_mutex into socket xpo_sendto methods
      svcrdma: Clean up the tracing for rw_ctx_init errors
      svcrdma: Clean up handling of get_rw_ctx errors
      svcrdma: Trace page overruns when constructing RDMA Reads
      svcrdma: trace undersized Write chunks
      svcrdma: Fix backchannel return code
      svcrdma: Remove backchannel dprintk call sites
      svcrdma: Rename tracepoints that record header decoding errors
      svcrdma: Remove the SVCRDMA_DEBUG macro
      svcrdma: Displayed remote IP address should match stored address
      svcrdma: Add tracepoints to report ->xpo_accept failures
      SUNRPC: Remove kernel memory address from svc_xprt tracepoints
      SUNRPC: Tracepoint to record errors in svc_xpo_create()
      SUNRPC: Trace a few more generic svc_xprt events
      SUNRPC: Remove "#include <trace/events/skb.h>"
      SUNRPC: Add more svcsock tracepoints
      SUNRPC: Replace dprintk call sites in TCP state change callouts
      SUNRPC: Trace server-side rpcbind registration events
      SUNRPC: Rename svc_sock::sk_reclen
      SUNRPC: Restructure svc_tcp_recv_record()
      SUNRPC: Replace dprintk() call sites in TCP receive path
      SUNRPC: Refactor recvfrom path dealing with incomplete TCP receives
      SUNRPC: Clean up svc_release_skb() functions
      SUNRPC: Refactor svc_recvfrom()
      SUNRPC: Restructure svc_udp_recvfrom()
      SUNRPC: svc_show_status() macro should have enum definitions
      NFSD: Add tracepoints to NFSD's duplicate reply cache
      NFSD: Add tracepoints to the NFSD state management code
      NFSD: Add tracepoints for monitoring NFSD callbacks
      SUNRPC: Clean up request deferral tracepoints
      NFSD: Squash an annoying compiler warning
      NFSD: Fix improperly-formatted Doxygen comments

 fs/nfsd/nfs4callback.c                     |  37 +-
 fs/nfsd/nfs4proc.c                         |   7 +-
 fs/nfsd/nfs4state.c                        |  63 ++--
 fs/nfsd/nfscache.c                         |  57 +--
 fs/nfsd/nfsctl.c                           |  26 +-
 fs/nfsd/state.h                            |   7 -
 fs/nfsd/trace.h                            | 345 +++++++++++++++++
 include/linux/sunrpc/svc.h                 |   1 +
 include/linux/sunrpc/svc_rdma.h            |   6 +-
 include/linux/sunrpc/svcsock.h             |   6 +-
 include/trace/events/rpcrdma.h             | 142 +++++--
 include/trace/events/sunrpc.h              | 419 +++++++++++++++++++--
 net/sunrpc/svc.c                           |  19 +-
 net/sunrpc/svc_xprt.c                      |  41 +-
 net/sunrpc/svcsock.c                       | 382 +++++++++----------
 net/sunrpc/xprtrdma/svc_rdma_backchannel.c |  86 +----
 net/sunrpc/xprtrdma/svc_rdma_recvfrom.c    |  21 +-
 net/sunrpc/xprtrdma/svc_rdma_rw.c          |  92 ++---
 net/sunrpc/xprtrdma/svc_rdma_transport.c   |  55 ++-
 19 files changed, 1257 insertions(+), 555 deletions(-)

Chuck Lever