Commit ff2d7db8 authored by Trond Myklebust's avatar Trond Myklebust

SUNRPC: Ensure that we read all available tcp data

Don't stop until we run out of data, or we hit an error.
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent f5fb7b06
...@@ -1073,6 +1073,7 @@ static void xs_tcp_data_ready(struct sock *sk, int bytes) ...@@ -1073,6 +1073,7 @@ static void xs_tcp_data_ready(struct sock *sk, int bytes)
{ {
struct rpc_xprt *xprt; struct rpc_xprt *xprt;
read_descriptor_t rd_desc; read_descriptor_t rd_desc;
int read;
dprintk("RPC: xs_tcp_data_ready...\n"); dprintk("RPC: xs_tcp_data_ready...\n");
...@@ -1084,8 +1085,10 @@ static void xs_tcp_data_ready(struct sock *sk, int bytes) ...@@ -1084,8 +1085,10 @@ static void xs_tcp_data_ready(struct sock *sk, int bytes)
/* We use rd_desc to pass struct xprt to xs_tcp_data_recv */ /* We use rd_desc to pass struct xprt to xs_tcp_data_recv */
rd_desc.arg.data = xprt; rd_desc.arg.data = xprt;
do {
rd_desc.count = 65536; rd_desc.count = 65536;
tcp_read_sock(sk, &rd_desc, xs_tcp_data_recv); read = tcp_read_sock(sk, &rd_desc, xs_tcp_data_recv);
} while (read > 0);
out: out:
read_unlock(&sk->sk_callback_lock); read_unlock(&sk->sk_callback_lock);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment