svcrdma: Drop connection after an RDMA Read error
authorChuck Lever <chuck.lever@oracle.com>
Tue, 10 Oct 2023 17:23:41 +0000 (13:23 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 28 Nov 2023 17:20:02 +0000 (17:20 +0000)
commit 197115ebf358cb440c73e868b2a0a5ef728decc6 upstream.

When an RPC Call message cannot be pulled from the client, that
is a message loss, by definition. Close the connection to trigger
the client to resend.

Cc: <stable@vger.kernel.org>
Reviewed-by: Tom Talpey <tom@talpey.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/sunrpc/xprtrdma/svc_rdma_recvfrom.c

index 85c8bca..3b05f90 100644 (file)
@@ -852,7 +852,8 @@ out_readfail:
        if (ret == -EINVAL)
                svc_rdma_send_error(rdma_xprt, ctxt, ret);
        svc_rdma_recv_ctxt_put(rdma_xprt, ctxt);
-       return ret;
+       svc_xprt_deferred_close(xprt);
+       return -ENOTCONN;
 
 out_backchannel:
        svc_rdma_handle_bc_reply(rqstp, ctxt);