diff options
-rw-r--r-- | include/linux/sunrpc/sched.h | 6 | ||||
-rw-r--r-- | net/sunrpc/clnt.c | 2 | ||||
-rw-r--r-- | net/sunrpc/sched.c | 3 | ||||
-rw-r--r-- | net/sunrpc/xprt.c | 2 | ||||
-rw-r--r-- | net/sunrpc/xprtsock.c | 1 |
5 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/sunrpc/sched.h b/include/linux/sunrpc/sched.h index 6c23f73a799a..45a64ae963ee 100644 --- a/include/linux/sunrpc/sched.h +++ b/include/linux/sunrpc/sched.h | |||
@@ -86,6 +86,12 @@ struct rpc_task { | |||
86 | struct work_struct tk_work; /* Async task work queue */ | 86 | struct work_struct tk_work; /* Async task work queue */ |
87 | struct rpc_wait tk_wait; /* RPC wait */ | 87 | struct rpc_wait tk_wait; /* RPC wait */ |
88 | } u; | 88 | } u; |
89 | |||
90 | unsigned short tk_timeouts; /* maj timeouts */ | ||
91 | size_t tk_bytes_sent; /* total bytes sent */ | ||
92 | unsigned long tk_start; /* RPC task init timestamp */ | ||
93 | long tk_rtt; /* round-trip time (jiffies) */ | ||
94 | |||
89 | #ifdef RPC_DEBUG | 95 | #ifdef RPC_DEBUG |
90 | unsigned short tk_pid; /* debugging aid */ | 96 | unsigned short tk_pid; /* debugging aid */ |
91 | #endif | 97 | #endif |
diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c index cad7efe2cb22..84eb5b4565fc 100644 --- a/net/sunrpc/clnt.c +++ b/net/sunrpc/clnt.c | |||
@@ -996,6 +996,8 @@ call_timeout(struct rpc_task *task) | |||
996 | } | 996 | } |
997 | 997 | ||
998 | dprintk("RPC: %4d call_timeout (major)\n", task->tk_pid); | 998 | dprintk("RPC: %4d call_timeout (major)\n", task->tk_pid); |
999 | task->tk_timeouts++; | ||
1000 | |||
999 | if (RPC_IS_SOFT(task)) { | 1001 | if (RPC_IS_SOFT(task)) { |
1000 | printk(KERN_NOTICE "%s: server %s not responding, timed out\n", | 1002 | printk(KERN_NOTICE "%s: server %s not responding, timed out\n", |
1001 | clnt->cl_protname, clnt->cl_server); | 1003 | clnt->cl_protname, clnt->cl_server); |
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index aa0449dcd8e5..cd51b5468332 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c | |||
@@ -817,6 +817,9 @@ void rpc_init_task(struct rpc_task *task, struct rpc_clnt *clnt, int flags, cons | |||
817 | 817 | ||
818 | BUG_ON(task->tk_ops == NULL); | 818 | BUG_ON(task->tk_ops == NULL); |
819 | 819 | ||
820 | /* starting timestamp */ | ||
821 | task->tk_start = jiffies; | ||
822 | |||
820 | dprintk("RPC: %4d new task procpid %d\n", task->tk_pid, | 823 | dprintk("RPC: %4d new task procpid %d\n", task->tk_pid, |
821 | current->pid); | 824 | current->pid); |
822 | } | 825 | } |
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index 93a0a3ca0d5f..c6241976a6ee 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c | |||
@@ -648,6 +648,8 @@ void xprt_complete_rqst(struct rpc_task *task, int copied) | |||
648 | task->tk_pid, ntohl(req->rq_xid), copied); | 648 | task->tk_pid, ntohl(req->rq_xid), copied); |
649 | 649 | ||
650 | task->tk_xprt->stat.recvs++; | 650 | task->tk_xprt->stat.recvs++; |
651 | task->tk_rtt = (long)jiffies - req->rq_xtime; | ||
652 | |||
651 | list_del_init(&req->rq_list); | 653 | list_del_init(&req->rq_list); |
652 | req->rq_received = req->rq_private_buf.len = copied; | 654 | req->rq_received = req->rq_private_buf.len = copied; |
653 | rpc_wake_up_task(task); | 655 | rpc_wake_up_task(task); |
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index 6766b7f1ecf9..4b4e7dfdff14 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -382,6 +382,7 @@ static int xs_tcp_send_request(struct rpc_task *task) | |||
382 | /* If we've sent the entire packet, immediately | 382 | /* If we've sent the entire packet, immediately |
383 | * reset the count of bytes sent. */ | 383 | * reset the count of bytes sent. */ |
384 | req->rq_bytes_sent += status; | 384 | req->rq_bytes_sent += status; |
385 | task->tk_bytes_sent += status; | ||
385 | if (likely(req->rq_bytes_sent >= req->rq_slen)) { | 386 | if (likely(req->rq_bytes_sent >= req->rq_slen)) { |
386 | req->rq_bytes_sent = 0; | 387 | req->rq_bytes_sent = 0; |
387 | return 0; | 388 | return 0; |