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: https://git.linux-nfs.org/?p=cel/cel-2.6.git;a=shortlog;h=refs/heads/nfsd-5.8 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