]> git.kernelconcepts.de Git - karo-tx-linux.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)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 19 Sep 2012 14:05:17 +0000 (15:05 +0100)
commit7b8b925af13a058ad6696b117503d6894d65897c
tree3118fb7b8cc0b8711994e0d22b83a5fcc3b0d9c3
parent2971abeb4ad7000b3ca8f5beca598eeea3f03a22
SUNRPC: Fix a UDP transport regression

commit f39c1bfb5a03e2d255451bff05be0d7255298fa4 upstream.

Commit 43cedbf0e8dfb9c5610eb7985d5f21263e313802 (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>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
include/linux/sunrpc/xprt.h
net/sunrpc/xprt.c
net/sunrpc/xprtrdma/transport.c
net/sunrpc/xprtsock.c