Last week Trond reported a server crash in svc_rdma_sendto() that seemed related to deferral of a request incoming on an RPC/RDMA transport. A link to that report appears in the first patch below. The fundamental problem seems to be that there is no way to guarantee test coverage of SUNRPC request deferral. "SUNRPC: Cache deferral injection" proposes a way to address that issue. With an on-demand mechanism for triggering a deferral, it was straightforward to find and address the issues that led to Trond's reported crash. The first patch in this series addresses the crash, and the second fixes a related observability crash. The final three patches are clean-ups that are possible now that the deferral issues have been addressed. Comments, opinions, and Reviewed-by's are appreciated! --- Chuck Lever (6): SUNRPC: Fix NFSD's request deferral on RDMA transports SUNRPC: Fix the svc_deferred_event trace class SUNRPC: Cache deferral injection SUNRPC: Make cache_req::thread_wait an unsigned long SUNRPC: Remove dead code in svc_tcp_release_rqst() SUNRPC: Remove svc_rqst::rq_xprt_hlen include/linux/sunrpc/cache.h | 7 +++---- include/linux/sunrpc/svc.h | 3 +-- include/trace/events/sunrpc.h | 11 +++++------ net/sunrpc/cache.c | 18 +++++++++++++++++- net/sunrpc/debugfs.c | 3 +++ net/sunrpc/fail.h | 2 +- net/sunrpc/svc_xprt.c | 11 ++++++----- net/sunrpc/svcsock.c | 11 ----------- net/sunrpc/xprtrdma/svc_rdma_recvfrom.c | 1 - 9 files changed, 36 insertions(+), 31 deletions(-) -- Chuck Lever