linux/net/sunrpc/xprtrdma
Chuck Lever 35d8b10a25 xprtrdma: Fix cwnd update ordering
After a reconnect, the reply handler is opening the cwnd (and thus
enabling more RPC Calls to be sent) /before/ rpcrdma_post_recvs()
can post enough Receive WRs to receive their replies. This causes an
RNR and the new connection is lost immediately.

The race is most clearly exposed when KASAN and disconnect injection
are enabled. This slows down rpcrdma_rep_create() enough to allow
the send side to post a bunch of RPC Calls before the Receive
completion handler can invoke ib_post_recv().

Fixes: 2ae50ad68c ("xprtrdma: Close window between waking RPC senders and posting Receives")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
2021-04-26 09:24:05 -04:00
..
backchannel.c rpcrdma: Fix comments about reverse-direction operation 2021-02-05 11:16:56 -05:00
frwr_ops.c xprtrdma: Avoid Receive Queue wrapping 2021-04-26 09:21:36 -04: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 xprtrdma: Fix cwnd update ordering 2021-04-26 09:24:05 -04:00
svc_rdma_backchannel.c svcrdma: disable timeouts on rdma backchannel 2021-03-06 16:41:48 -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: Revert "svcrdma: Reduce Receive doorbell rate" 2021-03-11 15:26:07 -05:00
svc_rdma_rw.c svcrdma: Restore read and write stats 2021-01-25 09:36:28 -05:00
svc_rdma_sendto.c svcrdma: Convert rdma_stat_sq_starve to a per-CPU counter 2021-01-25 09:36:28 -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 svcrdma: Deprecate stat variables that are no longer used 2021-01-25 09:36:28 -05:00
transport.c SUNRPC: Move fault injection call sites 2021-04-14 09:36:29 -04:00
verbs.c xprtrdma: Fix cwnd update ordering 2021-04-26 09:24:05 -04:00
xprt_rdma.h xprtrdma: Fix cwnd update ordering 2021-04-26 09:24:05 -04:00