]> git.baikalelectronics.ru Git - kernel.git/commit
SUNRPC: Fix a UDP transport regression
authorTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 7 Sep 2012 15:08:50 +0000 (11:08 -0400)
committerTrond Myklebust <Trond.Myklebust@netapp.com>
Fri, 7 Sep 2012 15:43:49 +0000 (11:43 -0400)
commitec51543ca98f15e797be99b1b4ef11e5b6babc7b
treec4f7c970840e7803e22ce10809746272d23f6fde
parentcb70217a4247b26413e5fe8a8d653412d69d8ed0
SUNRPC: Fix a UDP transport regression

Commit acc0f66c08acb2985d13c4252e9c6d6566ef4b32 (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: Dick Streefland <dick.streefland@altium.nl>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Cc: stable@vger.kernel.org [>= 3.1]
include/linux/sunrpc/xprt.h
net/sunrpc/xprt.c
net/sunrpc/xprtrdma/transport.c
net/sunrpc/xprtsock.c