Index: linux-2.6.16/net/sunrpc/svcsock.c =================================================================== --- linux-2.6.16.orig/net/sunrpc/svcsock.c 2008-06-16 15:39:01.774672997 +1000 +++ linux-2.6.16/net/sunrpc/svcsock.c 2008-06-16 15:45:06.203421620 +1000 @@ -1157,13 +1159,13 @@ svc_tcp_recvfrom(struct svc_rqst *rqstp) * particular pool, which provides an upper bound * on the number of threads which will access the socket. * - * rcvbuf just needs to be able to hold a few requests. - * Normally they will be removed from the queue - * as soon a a complete request arrives. + * rcvbuf needs the same room as sndbuf, to allow + * workloads comprising mostly WRITE calls to flow + * at a reasonable fraction of line speed. */ svc_sock_setbufsize(svsk->sk_sock, (serv->sv_nrthreads+3) * serv->sv_bufsz, - 3 * serv->sv_bufsz); + (serv->sv_nrthreads+3) * serv->sv_bufsz); svc_sock_clear_data_ready(svsk);