linux_dsm_epyc7002/net/sunrpc/xprtrdma
Chuck Lever eddae8be79 xprtrdma: Fix cwnd update ordering
[ Upstream commit 35d8b10a25884050bb3b0149b62c3818ec59f77c ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-05-19 10:13:04 +02:00
..
backchannel.c xprtrdma: kmalloc rpcrdma_ep separate from rpcrdma_xprt 2020-03-27 10:47:25 -04:00
frwr_ops.c xprtrdma: Avoid Receive Queue wrapping 2021-05-19 10:13:04 +02:00
Makefile xprtrdma: Remove support for FMR memory registration 2019-01-02 12:05:17 -05:00
module.c SUNRPC: xprt_load_transport() needs to support the netid "rdma6" 2020-12-30 11:53:30 +01:00
rpc_rdma.c xprtrdma: Fix cwnd update ordering 2021-05-19 10:13:04 +02:00
svc_rdma_backchannel.c svcrdma: disable timeouts on rdma backchannel 2021-03-25 09:04:08 +01:00
svc_rdma_recvfrom.c svcrdma: Remove transport reference counting 2020-07-28 10:18:14 -04:00
svc_rdma_rw.c net: sunrpc: delete repeated words 2020-09-25 18:01:26 -04:00
svc_rdma_sendto.c svcrdma: fix bounce buffers for unaligned offsets and multiple pages 2020-10-16 15:15:04 -04:00
svc_rdma_transport.c svcrdma: Hold private mutex while invoking rdma_accept() 2021-03-04 11:38:08 +01:00
svc_rdma.c sysctl: pass kernel pointers to ->proc_handler 2020-04-27 02:07:40 -04:00
transport.c SUNRPC: Move fault injection call sites 2021-05-19 10:13:03 +02:00
verbs.c xprtrdma: Fix cwnd update ordering 2021-05-19 10:13:04 +02:00
xprt_rdma.h xprtrdma: Fix cwnd update ordering 2021-05-19 10:13:04 +02:00