projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of /home/trondmy/kernel/linux-2.6/
[powerpc.git]
/
net
/
sunrpc
/
xprt.c
diff --git
a/net/sunrpc/xprt.c
b/net/sunrpc/xprt.c
index
e7c71a1
..
ee6ffa0
100644
(file)
--- a/
net/sunrpc/xprt.c
+++ b/
net/sunrpc/xprt.c
@@
-108,7
+108,7
@@
int xprt_reserve_xprt(struct rpc_task *task)
return 1;
out_sleep:
return 1;
out_sleep:
- dprintk("RPC: %
4d
failed to lock transport %p\n",
+ dprintk("RPC: %
5u
failed to lock transport %p\n",
task->tk_pid, xprt);
task->tk_timeout = 0;
task->tk_status = -EAGAIN;
task->tk_pid, xprt);
task->tk_timeout = 0;
task->tk_status = -EAGAIN;
@@
-158,7
+158,7
@@
int xprt_reserve_xprt_cong(struct rpc_task *task)
}
xprt_clear_locked(xprt);
out_sleep:
}
xprt_clear_locked(xprt);
out_sleep:
- dprintk("RPC: %
4d
failed to lock transport %p\n", task->tk_pid, xprt);
+ dprintk("RPC: %
5u
failed to lock transport %p\n", task->tk_pid, xprt);
task->tk_timeout = 0;
task->tk_status = -EAGAIN;
if (req && req->rq_ntrans)
task->tk_timeout = 0;
task->tk_status = -EAGAIN;
if (req && req->rq_ntrans)
@@
-281,7
+281,7
@@
__xprt_get_cong(struct rpc_xprt *xprt, struct rpc_task *task)
if (req->rq_cong)
return 1;
if (req->rq_cong)
return 1;
- dprintk("RPC: %
4d xprt_cwnd_limited cong = %ld cwnd = %ld
\n",
+ dprintk("RPC: %
5u xprt_cwnd_limited cong = %lu cwnd = %lu
\n",
task->tk_pid, xprt->cong, xprt->cwnd);
if (RPCXPRT_CONGESTED(xprt))
return 0;
task->tk_pid, xprt->cong, xprt->cwnd);
if (RPCXPRT_CONGESTED(xprt))
return 0;
@@
-340,7
+340,7
@@
void xprt_adjust_cwnd(struct rpc_task *task, int result)
if (cwnd < RPC_CWNDSCALE)
cwnd = RPC_CWNDSCALE;
}
if (cwnd < RPC_CWNDSCALE)
cwnd = RPC_CWNDSCALE;
}
- dprintk("RPC: cong %ld, cwnd was %ld, now %ld\n",
+ dprintk("RPC:
cong %ld, cwnd was %ld, now %ld\n",
xprt->cong, xprt->cwnd, cwnd);
xprt->cwnd = cwnd;
__xprt_put_cong(xprt, req);
xprt->cong, xprt->cwnd, cwnd);
xprt->cwnd = cwnd;
__xprt_put_cong(xprt, req);
@@
-387,8
+387,8
@@
void xprt_write_space(struct rpc_xprt *xprt)
spin_lock_bh(&xprt->transport_lock);
if (xprt->snd_task) {
spin_lock_bh(&xprt->transport_lock);
if (xprt->snd_task) {
- dprintk("RPC:
write space: waking waiting task on xprt %p\n",
- xprt);
+ dprintk("RPC:
write space: waking waiting task on "
+
"xprt %p\n",
xprt);
rpc_wake_up_task(xprt->snd_task);
}
spin_unlock_bh(&xprt->transport_lock);
rpc_wake_up_task(xprt->snd_task);
}
spin_unlock_bh(&xprt->transport_lock);
@@
-494,7
+494,7
@@
static void xprt_autoclose(struct work_struct *work)
*/
void xprt_disconnect(struct rpc_xprt *xprt)
{
*/
void xprt_disconnect(struct rpc_xprt *xprt)
{
- dprintk("RPC: disconnected transport %p\n", xprt);
+ dprintk("RPC:
disconnected transport %p\n", xprt);
spin_lock_bh(&xprt->transport_lock);
xprt_clear_connected(xprt);
xprt_wake_pending_tasks(xprt, -ENOTCONN);
spin_lock_bh(&xprt->transport_lock);
xprt_clear_connected(xprt);
xprt_wake_pending_tasks(xprt, -ENOTCONN);
@@
-530,7
+530,7
@@
void xprt_connect(struct rpc_task *task)
{
struct rpc_xprt *xprt = task->tk_xprt;
{
struct rpc_xprt *xprt = task->tk_xprt;
- dprintk("RPC: %
4d
xprt_connect xprt %p %s connected\n", task->tk_pid,
+ dprintk("RPC: %
5u
xprt_connect xprt %p %s connected\n", task->tk_pid,
xprt, (xprt_connected(xprt) ? "is" : "is not"));
if (!xprt_bound(xprt)) {
xprt, (xprt_connected(xprt) ? "is" : "is not"));
if (!xprt_bound(xprt)) {
@@
-560,7
+560,7
@@
static void xprt_connect_status(struct rpc_task *task)
if (task->tk_status >= 0) {
xprt->stat.connect_count++;
xprt->stat.connect_time += (long)jiffies - xprt->stat.connect_start;
if (task->tk_status >= 0) {
xprt->stat.connect_count++;
xprt->stat.connect_time += (long)jiffies - xprt->stat.connect_start;
- dprintk("RPC: %
4d
xprt_connect_status: connection established\n",
+ dprintk("RPC: %
5u
xprt_connect_status: connection established\n",
task->tk_pid);
return;
}
task->tk_pid);
return;
}
@@
-568,20
+568,22
@@
static void xprt_connect_status(struct rpc_task *task)
switch (task->tk_status) {
case -ECONNREFUSED:
case -ECONNRESET:
switch (task->tk_status) {
case -ECONNREFUSED:
case -ECONNRESET:
- dprintk("RPC: %4d xprt_connect_status: server %s refused connection\n",
- task->tk_pid, task->tk_client->cl_server);
+ dprintk("RPC: %5u xprt_connect_status: server %s refused "
+ "connection\n", task->tk_pid,
+ task->tk_client->cl_server);
break;
case -ENOTCONN:
break;
case -ENOTCONN:
- dprintk("RPC: %
4d
xprt_connect_status: connection broken\n",
+ dprintk("RPC: %
5u
xprt_connect_status: connection broken\n",
task->tk_pid);
break;
case -ETIMEDOUT:
task->tk_pid);
break;
case -ETIMEDOUT:
- dprintk("RPC: %
4d xprt_connect_status: connect attempt timed out\n",
- task->tk_pid);
+ dprintk("RPC: %
5u xprt_connect_status: connect attempt timed "
+
"out\n",
task->tk_pid);
break;
default:
break;
default:
- dprintk("RPC: %4d xprt_connect_status: error %d connecting to server %s\n",
- task->tk_pid, -task->tk_status, task->tk_client->cl_server);
+ dprintk("RPC: %5u xprt_connect_status: error %d connecting to "
+ "server %s\n", task->tk_pid, -task->tk_status,
+ task->tk_client->cl_server);
xprt_release_write(xprt, task);
task->tk_status = -EIO;
}
xprt_release_write(xprt, task);
task->tk_status = -EIO;
}
@@
-602,6
+604,9
@@
struct rpc_rqst *xprt_lookup_rqst(struct rpc_xprt *xprt, __be32 xid)
if (entry->rq_xid == xid)
return entry;
}
if (entry->rq_xid == xid)
return entry;
}
+
+ dprintk("RPC: xprt_lookup_rqst did not find xid %08x\n",
+ ntohl(xid));
xprt->stat.bad_xids++;
return NULL;
}
xprt->stat.bad_xids++;
return NULL;
}
@@
-654,7
+659,7
@@
static void xprt_timer(struct rpc_task *task)
struct rpc_rqst *req = task->tk_rqstp;
struct rpc_xprt *xprt = req->rq_xprt;
struct rpc_rqst *req = task->tk_rqstp;
struct rpc_xprt *xprt = req->rq_xprt;
- dprintk("RPC: %
4d
xprt_timer\n", task->tk_pid);
+ dprintk("RPC: %
5u
xprt_timer\n", task->tk_pid);
spin_lock(&xprt->transport_lock);
if (!req->rq_received) {
spin_lock(&xprt->transport_lock);
if (!req->rq_received) {
@@
-678,7
+683,7
@@
int xprt_prepare_transmit(struct rpc_task *task)
struct rpc_xprt *xprt = req->rq_xprt;
int err = 0;
struct rpc_xprt *xprt = req->rq_xprt;
int err = 0;
- dprintk("RPC: %
4d
xprt_prepare_transmit\n", task->tk_pid);
+ dprintk("RPC: %
5u
xprt_prepare_transmit\n", task->tk_pid);
spin_lock_bh(&xprt->transport_lock);
if (req->rq_received && !req->rq_bytes_sent) {
spin_lock_bh(&xprt->transport_lock);
if (req->rq_received && !req->rq_bytes_sent) {
@@
-716,7
+721,7
@@
void xprt_transmit(struct rpc_task *task)
struct rpc_xprt *xprt = req->rq_xprt;
int status;
struct rpc_xprt *xprt = req->rq_xprt;
int status;
- dprintk("RPC: %
4d
xprt_transmit(%u)\n", task->tk_pid, req->rq_slen);
+ dprintk("RPC: %
5u
xprt_transmit(%u)\n", task->tk_pid, req->rq_slen);
if (!req->rq_received) {
if (list_empty(&req->rq_list)) {
if (!req->rq_received) {
if (list_empty(&req->rq_list)) {
@@
-730,13
+735,23
@@
void xprt_transmit(struct rpc_task *task)
xprt_reset_majortimeo(req);
/* Turn off autodisconnect */
del_singleshot_timer_sync(&xprt->timer);
xprt_reset_majortimeo(req);
/* Turn off autodisconnect */
del_singleshot_timer_sync(&xprt->timer);
+ } else {
+ /* If all request bytes have been sent,
+ * then we must be retransmitting this one */
+ if (!req->rq_bytes_sent) {
+ if (task->tk_client->cl_discrtry) {
+ xprt_disconnect(xprt);
+ task->tk_status = -ENOTCONN;
+ return;
+ }
+ }
}
} else if (!req->rq_bytes_sent)
return;
status = xprt->ops->send_request(task);
if (status == 0) {
}
} else if (!req->rq_bytes_sent)
return;
status = xprt->ops->send_request(task);
if (status == 0) {
- dprintk("RPC: %
4d
xmit complete\n", task->tk_pid);
+ dprintk("RPC: %
5u
xmit complete\n", task->tk_pid);
spin_lock_bh(&xprt->transport_lock);
xprt->ops->set_retrans_timeout(task);
spin_lock_bh(&xprt->transport_lock);
xprt->ops->set_retrans_timeout(task);
@@
-777,7
+792,7
@@
static inline void do_xprt_reserve(struct rpc_task *task)
xprt_request_init(task, xprt);
return;
}
xprt_request_init(task, xprt);
return;
}
- dprintk("RPC: waiting for request slot\n");
+ dprintk("RPC:
waiting for request slot\n");
task->tk_status = -EAGAIN;
task->tk_timeout = 0;
rpc_sleep_on(&xprt->backlog, task, NULL, NULL);
task->tk_status = -EAGAIN;
task->tk_timeout = 0;
rpc_sleep_on(&xprt->backlog, task, NULL, NULL);
@@
-822,7
+837,7
@@
static void xprt_request_init(struct rpc_task *task, struct rpc_xprt *xprt)
req->rq_xid = xprt_alloc_xid(xprt);
req->rq_release_snd_buf = NULL;
xprt_reset_majortimeo(req);
req->rq_xid = xprt_alloc_xid(xprt);
req->rq_release_snd_buf = NULL;
xprt_reset_majortimeo(req);
- dprintk("RPC: %
4d
reserved req %p xid %08x\n", task->tk_pid,
+ dprintk("RPC: %
5u
reserved req %p xid %08x\n", task->tk_pid,
req, ntohl(req->rq_xid));
}
req, ntohl(req->rq_xid));
}
@@
-856,7
+871,7
@@
void xprt_release(struct rpc_task *task)
req->rq_release_snd_buf(req);
memset(req, 0, sizeof(*req)); /* mark unused */
req->rq_release_snd_buf(req);
memset(req, 0, sizeof(*req)); /* mark unused */
- dprintk("RPC: %
4d
release request %p\n", task->tk_pid, req);
+ dprintk("RPC: %
5u
release request %p\n", task->tk_pid, req);
spin_lock(&xprt->reserve_lock);
list_add(&req->rq_list, &xprt->free);
spin_lock(&xprt->reserve_lock);
list_add(&req->rq_list, &xprt->free);
@@
-906,7
+921,7
@@
struct rpc_xprt *xprt_create_transport(int proto, struct sockaddr *ap, size_t si
return ERR_PTR(-EIO);
}
if (IS_ERR(xprt)) {
return ERR_PTR(-EIO);
}
if (IS_ERR(xprt)) {
- dprintk("RPC: xprt_create_transport: failed, %ld\n",
+ dprintk("RPC:
xprt_create_transport: failed, %ld\n",
-PTR_ERR(xprt));
return xprt;
}
-PTR_ERR(xprt));
return xprt;
}
@@
-936,7
+951,7
@@
struct rpc_xprt *xprt_create_transport(int proto, struct sockaddr *ap, size_t si
xprt_init_xid(xprt);
xprt_init_xid(xprt);
- dprintk("RPC: created transport %p with %u slots\n", xprt,
+ dprintk("RPC:
created transport %p with %u slots\n", xprt,
xprt->max_reqs);
return xprt;
xprt->max_reqs);
return xprt;
@@
-951,7
+966,7
@@
static void xprt_destroy(struct kref *kref)
{
struct rpc_xprt *xprt = container_of(kref, struct rpc_xprt, kref);
{
struct rpc_xprt *xprt = container_of(kref, struct rpc_xprt, kref);
- dprintk("RPC: destroying transport %p\n", xprt);
+ dprintk("RPC:
destroying transport %p\n", xprt);
xprt->shutdown = 1;
del_timer_sync(&xprt->timer);
xprt->shutdown = 1;
del_timer_sync(&xprt->timer);