xprtrdma: Honor ->send_request API contract
Commit c93c6223 ("xprtrdma: Disconnect on registration failure") added a disconnect for some RPC marshaling failures. This is needed only in a handful of cases, but it was triggering for simple stuff like temporary resource shortages. Try to straighten this out. Fix up the lower layers so they don't return -ENOMEM or other error codes that the RPC client's FSM doesn't explicitly recognize. Also fix up the places in the send_request path that do want a disconnect. For example, when ib_post_send or ib_post_recv fail, this is a sign that there is a send or receive queue resource miscalculation. That should be rare, and is a sign of a software bug. But xprtrdma can recover: disconnect to reset the transport and start over. Signed-off-by:Chuck Lever <chuck.lever@oracle.com> Tested-by:
Steve Wise <swise@opengridcomputing.com> Signed-off-by:
Anna Schumaker <Anna.Schumaker@Netapp.com>
Showing
- net/sunrpc/xprtrdma/fmr_ops.c 3 additions, 3 deletionsnet/sunrpc/xprtrdma/fmr_ops.c
- net/sunrpc/xprtrdma/frwr_ops.c 7 additions, 6 deletionsnet/sunrpc/xprtrdma/frwr_ops.c
- net/sunrpc/xprtrdma/rpc_rdma.c 1 addition, 1 deletionnet/sunrpc/xprtrdma/rpc_rdma.c
- net/sunrpc/xprtrdma/transport.c 15 additions, 5 deletionsnet/sunrpc/xprtrdma/transport.c
- net/sunrpc/xprtrdma/verbs.c 13 additions, 9 deletionsnet/sunrpc/xprtrdma/verbs.c
Loading
Please register or sign in to comment