diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/sunrpc/sched.c | 2 | ||||
-rw-r--r-- | net/sunrpc/stats.c | 27 | ||||
-rw-r--r-- | net/sunrpc/xprt.c | 8 |
3 files changed, 15 insertions, 22 deletions
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index c8979ce5d88a..aa7b07ef5d55 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c | |||
@@ -834,7 +834,7 @@ static void rpc_init_task(struct rpc_task *task, const struct rpc_task_setup *ta | |||
834 | } | 834 | } |
835 | 835 | ||
836 | /* starting timestamp */ | 836 | /* starting timestamp */ |
837 | task->tk_start = jiffies; | 837 | task->tk_start = ktime_get(); |
838 | 838 | ||
839 | dprintk("RPC: new task initialized, procpid %u\n", | 839 | dprintk("RPC: new task initialized, procpid %u\n", |
840 | task_pid_nr(current)); | 840 | task_pid_nr(current)); |
diff --git a/net/sunrpc/stats.c b/net/sunrpc/stats.c index 5785d2037f45..aacd95f0dce5 100644 --- a/net/sunrpc/stats.c +++ b/net/sunrpc/stats.c | |||
@@ -144,7 +144,7 @@ void rpc_count_iostats(struct rpc_task *task) | |||
144 | struct rpc_rqst *req = task->tk_rqstp; | 144 | struct rpc_rqst *req = task->tk_rqstp; |
145 | struct rpc_iostats *stats; | 145 | struct rpc_iostats *stats; |
146 | struct rpc_iostats *op_metrics; | 146 | struct rpc_iostats *op_metrics; |
147 | long rtt, execute, queue; | 147 | ktime_t delta; |
148 | 148 | ||
149 | if (!task->tk_client || !task->tk_client->cl_metrics || !req) | 149 | if (!task->tk_client || !task->tk_client->cl_metrics || !req) |
150 | return; | 150 | return; |
@@ -159,20 +159,13 @@ void rpc_count_iostats(struct rpc_task *task) | |||
159 | op_metrics->om_bytes_sent += task->tk_bytes_sent; | 159 | op_metrics->om_bytes_sent += task->tk_bytes_sent; |
160 | op_metrics->om_bytes_recv += req->rq_reply_bytes_recvd; | 160 | op_metrics->om_bytes_recv += req->rq_reply_bytes_recvd; |
161 | 161 | ||
162 | queue = (long)req->rq_xtime - task->tk_start; | 162 | delta = ktime_sub(req->rq_xtime, task->tk_start); |
163 | if (queue < 0) | 163 | op_metrics->om_queue = ktime_add(op_metrics->om_queue, delta); |
164 | queue = -queue; | ||
165 | op_metrics->om_queue += queue; | ||
166 | 164 | ||
167 | rtt = task->tk_rtt; | 165 | op_metrics->om_rtt = ktime_add(op_metrics->om_rtt, task->tk_rtt); |
168 | if (rtt < 0) | ||
169 | rtt = -rtt; | ||
170 | op_metrics->om_rtt += rtt; | ||
171 | 166 | ||
172 | execute = (long)jiffies - task->tk_start; | 167 | delta = ktime_sub(ktime_get(), task->tk_start); |
173 | if (execute < 0) | 168 | op_metrics->om_execute = ktime_add(op_metrics->om_execute, delta); |
174 | execute = -execute; | ||
175 | op_metrics->om_execute += execute; | ||
176 | } | 169 | } |
177 | 170 | ||
178 | static void _print_name(struct seq_file *seq, unsigned int op, | 171 | static void _print_name(struct seq_file *seq, unsigned int op, |
@@ -186,8 +179,6 @@ static void _print_name(struct seq_file *seq, unsigned int op, | |||
186 | seq_printf(seq, "\t%12u: ", op); | 179 | seq_printf(seq, "\t%12u: ", op); |
187 | } | 180 | } |
188 | 181 | ||
189 | #define MILLISECS_PER_JIFFY (1000 / HZ) | ||
190 | |||
191 | void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) | 182 | void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) |
192 | { | 183 | { |
193 | struct rpc_iostats *stats = clnt->cl_metrics; | 184 | struct rpc_iostats *stats = clnt->cl_metrics; |
@@ -214,9 +205,9 @@ void rpc_print_iostats(struct seq_file *seq, struct rpc_clnt *clnt) | |||
214 | metrics->om_timeouts, | 205 | metrics->om_timeouts, |
215 | metrics->om_bytes_sent, | 206 | metrics->om_bytes_sent, |
216 | metrics->om_bytes_recv, | 207 | metrics->om_bytes_recv, |
217 | metrics->om_queue * MILLISECS_PER_JIFFY, | 208 | ktime_to_ms(metrics->om_queue), |
218 | metrics->om_rtt * MILLISECS_PER_JIFFY, | 209 | ktime_to_ms(metrics->om_rtt), |
219 | metrics->om_execute * MILLISECS_PER_JIFFY); | 210 | ktime_to_ms(metrics->om_execute)); |
220 | } | 211 | } |
221 | } | 212 | } |
222 | EXPORT_SYMBOL_GPL(rpc_print_iostats); | 213 | EXPORT_SYMBOL_GPL(rpc_print_iostats); |
diff --git a/net/sunrpc/xprt.c b/net/sunrpc/xprt.c index 698c62712294..8986b1b82862 100644 --- a/net/sunrpc/xprt.c +++ b/net/sunrpc/xprt.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include <linux/interrupt.h> | 43 | #include <linux/interrupt.h> |
44 | #include <linux/workqueue.h> | 44 | #include <linux/workqueue.h> |
45 | #include <linux/net.h> | 45 | #include <linux/net.h> |
46 | #include <linux/ktime.h> | ||
46 | 47 | ||
47 | #include <linux/sunrpc/clnt.h> | 48 | #include <linux/sunrpc/clnt.h> |
48 | #include <linux/sunrpc/metrics.h> | 49 | #include <linux/sunrpc/metrics.h> |
@@ -779,10 +780,11 @@ static void xprt_update_rtt(struct rpc_task *task) | |||
779 | struct rpc_rqst *req = task->tk_rqstp; | 780 | struct rpc_rqst *req = task->tk_rqstp; |
780 | struct rpc_rtt *rtt = task->tk_client->cl_rtt; | 781 | struct rpc_rtt *rtt = task->tk_client->cl_rtt; |
781 | unsigned timer = task->tk_msg.rpc_proc->p_timer; | 782 | unsigned timer = task->tk_msg.rpc_proc->p_timer; |
783 | long m = usecs_to_jiffies(ktime_to_us(task->tk_rtt)); | ||
782 | 784 | ||
783 | if (timer) { | 785 | if (timer) { |
784 | if (req->rq_ntrans == 1) | 786 | if (req->rq_ntrans == 1) |
785 | rpc_update_rtt(rtt, timer, task->tk_rtt); | 787 | rpc_update_rtt(rtt, timer, m); |
786 | rpc_set_timeo(rtt, timer, req->rq_ntrans - 1); | 788 | rpc_set_timeo(rtt, timer, req->rq_ntrans - 1); |
787 | } | 789 | } |
788 | } | 790 | } |
@@ -803,7 +805,7 @@ void xprt_complete_rqst(struct rpc_task *task, int copied) | |||
803 | task->tk_pid, ntohl(req->rq_xid), copied); | 805 | task->tk_pid, ntohl(req->rq_xid), copied); |
804 | 806 | ||
805 | xprt->stat.recvs++; | 807 | xprt->stat.recvs++; |
806 | task->tk_rtt = (long)jiffies - req->rq_xtime; | 808 | task->tk_rtt = ktime_sub(ktime_get(), req->rq_xtime); |
807 | if (xprt->ops->timer != NULL) | 809 | if (xprt->ops->timer != NULL) |
808 | xprt_update_rtt(task); | 810 | xprt_update_rtt(task); |
809 | 811 | ||
@@ -904,7 +906,7 @@ void xprt_transmit(struct rpc_task *task) | |||
904 | return; | 906 | return; |
905 | 907 | ||
906 | req->rq_connect_cookie = xprt->connect_cookie; | 908 | req->rq_connect_cookie = xprt->connect_cookie; |
907 | req->rq_xtime = jiffies; | 909 | req->rq_xtime = ktime_get(); |
908 | status = xprt->ops->send_request(task); | 910 | status = xprt->ops->send_request(task); |
909 | if (status != 0) { | 911 | if (status != 0) { |
910 | task->tk_status = status; | 912 | task->tk_status = status; |