• Chuck Lever's avatar
    xprtrdma: Disconnect on registration failure · c93c6223
    Chuck Lever authored
    If rpcrdma_register_external() fails during request marshaling, the
    current RPC request is killed. Instead, this RPC should be retried
    after reconnecting the transport instance.
    
    The most likely reason for registration failure with FRMR is a
    failed post_send, which would be due to a remote transport
    disconnect or memory exhaustion. These issues can be recovered
    by a retry.
    
    Problems encountered in the marshaling logic itself will not be
    corrected by trying again, so these should still kill a request.
    
    Now that we've added a clean exit for marshaling errors, take the
    opportunity to defang some BUG_ON's.
    Signed-off-by: default avatarChuck Lever <chuck.lever@oracle.com>
    Signed-off-by: default avatarAnna Schumaker <Anna.Schumaker@Netapp.com>
    c93c6223
rpc_rdma.c 27 KB