mbox series

[v1,0/6] Fix request deferral for NFS/RDMA

Message ID 164909503892.3716.8666091898179474248.stgit@manet.1015granger.net (mailing list archive)
Headers show
Series Fix request deferral for NFS/RDMA | expand

Message

Chuck Lever April 4, 2022, 6:08 p.m. UTC
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