linux/net/sunrpc/xprtrdma
Chuck Lever 2ae50ad68c xprtrdma: Close window between waking RPC senders and posting Receives
A recent clean up attempted to separate Receive handling and RPC
Reply processing, in the name of clean layering.

Unfortunately, we can't do this because the Receive Queue has to be
refilled _after_ the most recent credit update from the responder
is parsed from the transport header, but _before_ we wake up the
next RPC sender. That is right in the middle of
rpcrdma_reply_handler().

Usually this isn't a problem because current responder
implementations don't vary their credit grant. The one exception is
when a connection is established: the grant goes from one to a much
larger number on the first Receive. The requester MUST post enough
Receives right then so that any outstanding requests can be sent
without risking RNR and connection loss.

Fixes: 6ceea36890 ("xprtrdma: Refactor Receive accounting")
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
2019-10-24 10:30:40 -04:00
..
backchannel.c xprtrdma: Fix bc_max_slots return value 2019-08-21 14:35:49 -04:00
frwr_ops.c xprtrdma: Add unique trace points for posting Local Invalidate WRs 2019-10-24 10:30:39 -04:00
Makefile xprtrdma: Remove support for FMR memory registration 2019-01-02 12:05:17 -05:00
module.c NFS client updates for Linux 4.18 2018-06-12 10:09:03 -07:00
rpc_rdma.c xprtrdma: Close window between waking RPC senders and posting Receives 2019-10-24 10:30:40 -04:00
svc_rdma_backchannel.c SUNRPC: Remove the bh-safe lock requirement on xprt->transport_lock 2019-07-06 14:54:48 -04:00
svc_rdma_recvfrom.c svcrdma: Use llist for managing cache of recv_ctxts 2019-08-19 10:59:28 -04:00
svc_rdma_rw.c scsi: lib/sg_pool.c: improve APIs for allocating sg pool 2019-06-20 15:21:33 -04:00
svc_rdma_sendto.c svcrdma: Remove syslog warnings in work completion handlers 2019-02-06 15:37:15 -05:00
svc_rdma_transport.c Highlights: 2019-09-27 17:00:27 -07:00
svc_rdma.c svcrdma: Remove svc_rdma_wq 2019-08-19 10:59:28 -04:00
transport.c xprtrdma: Initialize rb_credits in one place 2019-10-24 10:30:39 -04:00
verbs.c xprtrdma: Close window between waking RPC senders and posting Receives 2019-10-24 10:30:40 -04:00
xprt_rdma.h xprtrdma: Close window between waking RPC senders and posting Receives 2019-10-24 10:30:40 -04:00