linux/net/sunrpc/xprtrdma
Chuck Lever 0ac24c320c svcrdma: Hold private mutex while invoking rdma_accept()
RDMA core mutex locking was restructured by commit d114c6feed
("RDMA/cma: Add missing locking to rdma_accept()") [Aug 2020]. When
lock debugging is enabled, the RPC/RDMA server trips over the new
lockdep assertion in rdma_accept() because it doesn't call
rdma_accept() from its CM event handler.

As a temporary fix, have svc_rdma_accept() take the handler_mutex
explicitly. In the meantime, let's consider how to restructure the
RPC/RDMA transport to invoke rdma_accept() from the proper context.

Calls to svc_rdma_accept() are serialized with calls to
svc_rdma_free() by the generic RPC server layer.

Suggested-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/linux-rdma/20210209154014.GO4247@nvidia.com/
Fixes: d114c6feed ("RDMA/cma: Add missing locking to rdma_accept()")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
2021-02-15 10:45:00 -05:00
..
backchannel.c xprtrdma: Clean up xprtrdma callback tracepoints 2020-11-11 10:40:38 -05:00
frwr_ops.c xprtrdma: Micro-optimize MR DMA-unmapping 2020-11-11 10:57:39 -05:00
Makefile svcrdma: Add a "parsed chunk list" data structure 2020-11-30 13:00:22 -05:00
module.c SUNRPC: xprt_load_transport() needs to support the netid "rdma6" 2020-12-02 14:05:52 -05:00
rpc_rdma.c NFSoRDmA Client updates for Linux 5.11 2020-12-15 20:08:41 -05:00
svc_rdma_backchannel.c svcrdma: Support multiple write chunks when pulling up 2020-11-30 13:00:22 -05:00
svc_rdma_pcl.c svcrdma: Add a "parsed chunk list" data structure 2020-11-30 13:00:22 -05:00
svc_rdma_recvfrom.c svcrdma: Use the new parsed chunk list when pulling Read chunks 2020-11-30 13:00:23 -05:00
svc_rdma_rw.c svcrdma: support multiple Read chunks per RPC 2020-11-30 13:00:23 -05:00
svc_rdma_sendto.c svcrdma: Clean up chunk tracepoints 2020-11-30 13:00:23 -05:00
svc_rdma_transport.c svcrdma: Hold private mutex while invoking rdma_accept() 2021-02-15 10:45:00 -05:00
svc_rdma.c sysctl: pass kernel pointers to ->proc_handler 2020-04-27 02:07:40 -04:00
transport.c NFSoRDmA Client updates for Linux 5.11 2020-12-15 20:08:41 -05:00
verbs.c xprtrdma: Move rpcrdma_mr_put() 2020-11-11 10:52:18 -05:00
xprt_rdma.h xprtrdma: Micro-optimize MR DMA-unmapping 2020-11-11 10:57:39 -05:00