git://git.onelab.eu
/
linux-2.6.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
This commit was manufactured by cvs2svn to create tag
[linux-2.6.git]
/
net
/
sunrpc
/
svcsock.c
diff --git
a/net/sunrpc/svcsock.c
b/net/sunrpc/svcsock.c
index
a8ac421
..
024e768
100644
(file)
--- a/
net/sunrpc/svcsock.c
+++ b/
net/sunrpc/svcsock.c
@@
-1255,6
+1255,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) {
/* No data, incomplete (TCP) read, or accept() */
if (len == 0 || len == -EAGAIN) {
+ rqstp->rq_res.len = 0;
svc_sock_release(rqstp);
return -EAGAIN;
}
svc_sock_release(rqstp);
return -EAGAIN;
}
@@
-1511,9
+1512,9
@@
static void svc_revisit(struct cache_deferred_req *dreq, int too_many)
dprintk("revisit queued\n");
svsk = dr->svsk;
dr->svsk = NULL;
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);
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);
set_bit(SK_DEFERRED, &svsk->sk_flags);
svc_sock_enqueue(svsk);
svc_sock_put(svsk);
@@
-1544,10
+1545,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);
}
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;
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;
dr->handle.revisit = svc_revisit;
return &dr->handle;
@@
-1577,7
+1578,7
@@
static struct svc_deferred_req *svc_deferred_dequeue(struct svc_sock *svsk)
if (!test_bit(SK_DEFERRED, &svsk->sk_flags))
return NULL;
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,
clear_bit(SK_DEFERRED, &svsk->sk_flags);
if (!list_empty(&svsk->sk_deferred)) {
dr = list_entry(svsk->sk_deferred.next,
@@
-1586,6
+1587,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);
}
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;
}
return dr;
}