|
@@ -157,15 +157,17 @@ void rpc_count_iostats_metrics(const struct rpc_task *task,
|
|
|
spin_lock(&op_metrics->om_lock);
|
|
|
|
|
|
op_metrics->om_ops++;
|
|
|
- op_metrics->om_ntrans += req->rq_ntrans;
|
|
|
+ /* kernel API: om_ops must never become larger than om_ntrans */
|
|
|
+ op_metrics->om_ntrans += max(req->rq_ntrans, 1);
|
|
|
op_metrics->om_timeouts += task->tk_timeouts;
|
|
|
|
|
|
op_metrics->om_bytes_sent += req->rq_xmit_bytes_sent;
|
|
|
op_metrics->om_bytes_recv += req->rq_reply_bytes_recvd;
|
|
|
|
|
|
- delta = ktime_sub(req->rq_xtime, task->tk_start);
|
|
|
- op_metrics->om_queue = ktime_add(op_metrics->om_queue, delta);
|
|
|
-
|
|
|
+ if (ktime_to_ns(req->rq_xtime)) {
|
|
|
+ delta = ktime_sub(req->rq_xtime, task->tk_start);
|
|
|
+ op_metrics->om_queue = ktime_add(op_metrics->om_queue, delta);
|
|
|
+ }
|
|
|
op_metrics->om_rtt = ktime_add(op_metrics->om_rtt, req->rq_rtt);
|
|
|
|
|
|
delta = ktime_sub(now, task->tk_start);
|