static int after_reply(struct ptlrpc_request *req)
{
struct obd_import *imp = req->rq_import;
+ struct obd_device *obd = req->rq_import->imp_obd;
int rc;
+ struct timeval work_start;
+ long timediff;
ENTRY;
LASSERT(!req->rq_receiving_reply);
+ LASSERT(obd);
LASSERT(req->rq_nob_received <= req->rq_repbuf_len);
/* NB Until this point, the whole of the incoming message,
RETURN(-EPROTO);
}
+ do_gettimeofday(&work_start);
+ timediff = cfs_timeval_sub(&work_start, &req->rq_arrival_time, NULL);
+ if (obd->obd_svc_stats != NULL)
+ lprocfs_counter_add(obd->obd_svc_stats, PTLRPC_REQWAIT_CNTR,
+ timediff);
+
if (lustre_msg_get_type(req->rq_repmsg) != PTL_RPC_MSG_REPLY &&
lustre_msg_get_type(req->rq_repmsg) != PTL_RPC_MSG_ERR) {
DEBUG_REQ(D_ERROR, req, "invalid packet received (type=%u)",
struct ptlrpc_connection *connection;
lnet_handle_me_t reply_me_h;
lnet_md_t reply_md;
+ struct obd_device *obd = request->rq_import->imp_obd;
ENTRY;
if (OBD_FAIL_CHECK(OBD_FAIL_PTLRPC_DROP_RPC))
/* add references on request and import for request_out_callback */
ptlrpc_request_addref(request);
atomic_inc(&request->rq_import->imp_inflight);
+ if (obd->obd_svc_stats != NULL)
+ lprocfs_counter_add(obd->obd_svc_stats, PTLRPC_REQACTIVE_CNTR,
+ request->rq_import->imp_inflight.counter);
OBD_FAIL_TIMEOUT(OBD_FAIL_PTLRPC_DELAY_SEND, request->rq_timeout + 5);
request->rq_sent = CURRENT_SECONDS;
+ do_gettimeofday(&request->rq_arrival_time);
ptlrpc_pinger_sending_on_import(request->rq_import);
rc = ptl_send_buf(&request->rq_req_md_h,
request->rq_reqbuf, request->rq_reqdata_len,