SUNRPC: RPC callbacks may be split across several TCP segments
authorTrond Myklebust <trond.myklebust@primarydata.com>
Mon, 10 Feb 2014 16:18:39 +0000 (11:18 -0500)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Tue, 11 Feb 2014 19:01:20 +0000 (14:01 -0500)
commit2ea24497a1b30dd03dd42b873fa5097913587f4d
tree1e1b3d1c95e712dcce68be4d011620b46a6271c7
parent628356791b04ea988fee070f66a748a823d001bb
SUNRPC: RPC callbacks may be split across several TCP segments

Since TCP is a stream protocol, our callback read code needs to take into
account the fact that RPC callbacks are not always confined to a single
TCP segment.
This patch adds support for multiple TCP segments by ensuring that we
only remove the rpc_rqst structure from the 'free backchannel requests'
list once the data has been completely received. We rely on the fact
that TCP data is ordered for the duration of the connection.

Reported-by: shaobingqing <shaobingqing@bwstor.com.cn>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
include/linux/sunrpc/bc_xprt.h
net/sunrpc/backchannel_rqst.c
net/sunrpc/xprtsock.c