]> 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)
commit25d55963055b92b6eec8d1d0e60ac0679a6d9544
treec4f7c970840e7803e22ce10809746272d23f6fde
parent9509a1cf9ad39d18d8b30697e80044f9194df0cc
SUNRPC: Fix a UDP transport regression

Commit 07e1dbdb716310a5612ace835452586a2c8da51d (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