|
@@ -436,7 +436,6 @@ static void svc_sock_setbufsize(struct socket *sock, unsigned int snd,
|
|
|
lock_sock(sock->sk);
|
|
|
sock->sk->sk_sndbuf = snd * 2;
|
|
|
sock->sk->sk_rcvbuf = rcv * 2;
|
|
|
- sock->sk->sk_userlocks |= SOCK_SNDBUF_LOCK|SOCK_RCVBUF_LOCK;
|
|
|
sock->sk->sk_write_space(sock->sk);
|
|
|
release_sock(sock->sk);
|
|
|
#endif
|
|
@@ -973,23 +972,6 @@ static int svc_tcp_recv_record(struct svc_sock *svsk, struct svc_rqst *rqstp)
|
|
|
unsigned int want;
|
|
|
int len;
|
|
|
|
|
|
- if (test_and_clear_bit(XPT_CHNGBUF, &svsk->sk_xprt.xpt_flags))
|
|
|
- /* sndbuf needs to have room for one request
|
|
|
- * per thread, otherwise we can stall even when the
|
|
|
- * network isn't a bottleneck.
|
|
|
- *
|
|
|
- * We count all threads rather than threads in a
|
|
|
- * 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.
|
|
|
- */
|
|
|
- svc_sock_setbufsize(svsk->sk_sock,
|
|
|
- (serv->sv_nrthreads+3) * serv->sv_max_mesg,
|
|
|
- 3 * serv->sv_max_mesg);
|
|
|
-
|
|
|
clear_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
|
|
|
|
|
|
if (svsk->sk_tcplen < sizeof(rpc_fraghdr)) {
|
|
@@ -1367,15 +1349,6 @@ static void svc_tcp_init(struct svc_sock *svsk, struct svc_serv *serv)
|
|
|
|
|
|
tcp_sk(sk)->nonagle |= TCP_NAGLE_OFF;
|
|
|
|
|
|
- /* initialise setting must have enough space to
|
|
|
- * receive and respond to one request.
|
|
|
- * svc_tcp_recvfrom will re-adjust if necessary
|
|
|
- */
|
|
|
- svc_sock_setbufsize(svsk->sk_sock,
|
|
|
- 3 * svsk->sk_xprt.xpt_server->sv_max_mesg,
|
|
|
- 3 * svsk->sk_xprt.xpt_server->sv_max_mesg);
|
|
|
-
|
|
|
- set_bit(XPT_CHNGBUF, &svsk->sk_xprt.xpt_flags);
|
|
|
set_bit(XPT_DATA, &svsk->sk_xprt.xpt_flags);
|
|
|
if (sk->sk_state != TCP_ESTABLISHED)
|
|
|
set_bit(XPT_CLOSE, &svsk->sk_xprt.xpt_flags);
|
|
@@ -1439,8 +1412,14 @@ static struct svc_sock *svc_setup_socket(struct svc_serv *serv,
|
|
|
/* Initialize the socket */
|
|
|
if (sock->type == SOCK_DGRAM)
|
|
|
svc_udp_init(svsk, serv);
|
|
|
- else
|
|
|
+ else {
|
|
|
+ /* initialise setting must have enough space to
|
|
|
+ * receive and respond to one request.
|
|
|
+ */
|
|
|
+ svc_sock_setbufsize(svsk->sk_sock, 4 * serv->sv_max_mesg,
|
|
|
+ 4 * serv->sv_max_mesg);
|
|
|
svc_tcp_init(svsk, serv);
|
|
|
+ }
|
|
|
|
|
|
dprintk("svc: svc_setup_socket created %p (inet %p)\n",
|
|
|
svsk, svsk->sk_sk);
|