SUNRPC: Don't hold the transport lock across socket copy operations
authorTrond Myklebust <trond.myklebust@primarydata.com>
Sun, 13 Aug 2017 14:03:59 +0000 (10:03 -0400)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Wed, 16 Aug 2017 19:10:15 +0000 (15:10 -0400)
commit729749bb8da186e68d97d1b0439f0b1e0059c41d
treec1d450aa081919168535f06755247f022a09a517
parent2ce209c42c01ca976ad680fea52a8e8b9a53643b
SUNRPC: Don't hold the transport lock across socket copy operations

Instead add a mechanism to ensure that the request doesn't disappear
from underneath us while copying from the socket. We do this by
preventing xprt_release() from freeing the XDR buffers until the
flag RPC_TASK_MSG_RECV has been cleared from the request.

Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Reviewed-by: Chuck Lever <chuck.lever@oracle.com>
include/linux/sunrpc/sched.h
include/linux/sunrpc/xprt.h
net/sunrpc/xprt.c
net/sunrpc/xprtsock.c