|
@@ -826,6 +826,7 @@ static void xprt_connect_status(struct rpc_task *task)
|
|
|
* @xprt: transport on which the original request was transmitted
|
|
|
* @xid: RPC XID of incoming reply
|
|
|
*
|
|
|
+ * Caller holds xprt->recv_lock.
|
|
|
*/
|
|
|
struct rpc_rqst *xprt_lookup_rqst(struct rpc_xprt *xprt, __be32 xid)
|
|
|
{
|
|
@@ -834,6 +835,7 @@ struct rpc_rqst *xprt_lookup_rqst(struct rpc_xprt *xprt, __be32 xid)
|
|
|
list_for_each_entry(entry, &xprt->recv, rq_list)
|
|
|
if (entry->rq_xid == xid) {
|
|
|
trace_xprt_lookup_rqst(xprt, xid, 0);
|
|
|
+ entry->rq_rtt = ktime_sub(ktime_get(), entry->rq_xtime);
|
|
|
return entry;
|
|
|
}
|
|
|
|
|
@@ -915,7 +917,7 @@ EXPORT_SYMBOL_GPL(xprt_update_rtt);
|
|
|
* @task: RPC request that recently completed
|
|
|
* @copied: actual number of bytes received from the transport
|
|
|
*
|
|
|
- * Caller holds transport lock.
|
|
|
+ * Caller holds xprt->recv_lock.
|
|
|
*/
|
|
|
void xprt_complete_rqst(struct rpc_task *task, int copied)
|
|
|
{
|
|
@@ -927,7 +929,6 @@ void xprt_complete_rqst(struct rpc_task *task, int copied)
|
|
|
trace_xprt_complete_rqst(xprt, req->rq_xid, copied);
|
|
|
|
|
|
xprt->stat.recvs++;
|
|
|
- req->rq_rtt = ktime_sub(ktime_get(), req->rq_xtime);
|
|
|
|
|
|
list_del_init(&req->rq_list);
|
|
|
req->rq_private_buf.len = copied;
|