This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / net / sunrpc / svcsock.c
index a8ac421..ad353ae 100644 (file)
@@ -125,7 +125,7 @@ svc_sock_wspace(struct svc_sock *svsk)
        int wspace;
 
        if (svsk->sk_sock->type == SOCK_STREAM)
-               wspace = tcp_wspace(svsk->sk_sk);
+               wspace = sk_stream_wspace(svsk->sk_sk);
        else
                wspace = sock_wspace(svsk->sk_sk);
 
@@ -414,7 +414,6 @@ svc_sendto(struct svc_rqst *rqstp, struct xdr_buf *xdr)
        }
        /* send tail */
        if (xdr->tail[0].iov_len) {
-               /* The tail *will* be in respages[0]; */
                result = sock->ops->sendpage(sock, rqstp->rq_respages[rqstp->rq_restailpage], 
                                             ((unsigned long)xdr->tail[0].iov_base)& (PAGE_SIZE-1),
                                             xdr->tail[0].iov_len, 0);
@@ -1017,7 +1016,7 @@ svc_tcp_recvfrom(struct svc_rqst *rqstp)
                rqstp->rq_arg.page_len = len - rqstp->rq_arg.head[0].iov_len;
        }
 
-       rqstp->rq_skbuff      = 0;
+       rqstp->rq_skbuff      = NULL;
        rqstp->rq_prot        = IPPROTO_TCP;
 
        /* Reset TCP read info */
@@ -1255,6 +1254,7 @@ svc_recv(struct svc_serv *serv, struct svc_rqst *rqstp, long timeout)
 
        /* No data, incomplete (TCP) read, or accept() */
        if (len == 0 || len == -EAGAIN) {
+               rqstp->rq_res.len = 0;
                svc_sock_release(rqstp);
                return -EAGAIN;
        }
@@ -1511,9 +1511,9 @@ static void svc_revisit(struct cache_deferred_req *dreq, int too_many)
        dprintk("revisit queued\n");
        svsk = dr->svsk;
        dr->svsk = NULL;
-       spin_lock(&serv->sv_lock);
+       spin_lock_bh(&serv->sv_lock);
        list_add(&dr->handle.recent, &svsk->sk_deferred);
-       spin_unlock(&serv->sv_lock);
+       spin_unlock_bh(&serv->sv_lock);
        set_bit(SK_DEFERRED, &svsk->sk_flags);
        svc_sock_enqueue(svsk);
        svc_sock_put(svsk);
@@ -1544,10 +1544,10 @@ svc_defer(struct cache_req *req)
                dr->argslen = rqstp->rq_arg.len >> 2;
                memcpy(dr->args, rqstp->rq_arg.head[0].iov_base-skip, dr->argslen<<2);
        }
-       spin_lock(&rqstp->rq_server->sv_lock);
+       spin_lock_bh(&rqstp->rq_server->sv_lock);
        rqstp->rq_sock->sk_inuse++;
        dr->svsk = rqstp->rq_sock;
-       spin_unlock(&rqstp->rq_server->sv_lock);
+       spin_unlock_bh(&rqstp->rq_server->sv_lock);
 
        dr->handle.revisit = svc_revisit;
        return &dr->handle;
@@ -1577,7 +1577,7 @@ static struct svc_deferred_req *svc_deferred_dequeue(struct svc_sock *svsk)
        
        if (!test_bit(SK_DEFERRED, &svsk->sk_flags))
                return NULL;
-       spin_lock(&serv->sv_lock);
+       spin_lock_bh(&serv->sv_lock);
        clear_bit(SK_DEFERRED, &svsk->sk_flags);
        if (!list_empty(&svsk->sk_deferred)) {
                dr = list_entry(svsk->sk_deferred.next,
@@ -1586,6 +1586,6 @@ static struct svc_deferred_req *svc_deferred_dequeue(struct svc_sock *svsk)
                list_del_init(&dr->handle.recent);
                set_bit(SK_DEFERRED, &svsk->sk_flags);
        }
-       spin_unlock(&serv->sv_lock);
+       spin_unlock_bh(&serv->sv_lock);
        return dr;
 }