• Trond Myklebust's avatar
    SUNRPC: Fix a UDP transport regression · f39c1bfb
    Trond Myklebust authored
    Commit 43cedbf0 (SUNRPC: Ensure that
    we grab the XPRT_LOCK before calling xprt_alloc_slot) is causing
    hangs in the case of NFS over UDP mounts.
    
    Since neither the UDP or the RDMA transport mechanism use dynamic slot
    allocation, we can skip grabbing the socket lock for those transports.
    Add a new rpc_xprt_op to allow switching between the TCP and UDP/RDMA
    case.
    
    Note that the NFSv4.1 back channel assigns the slot directly
    through rpc_run_bc_task, so we can ignore that case.
    Reported-by: default avatarDick Streefland <dick.streefland@altium.nl>
    Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
    Cc: stable@vger.kernel.org [>= 3.1]
    f39c1bfb
xprtsock.c 78.3 KB