[PATCH v7 2/9] block: record I/O request start time for passthru request

Hannes Reinecke hare at suse.de
Sun Aug 9 23:44:34 PDT 2026


On 8/9/26 12:07 PM, Nilay Shroff wrote:
> While starting an I/O request, blk_mq_start_request() records the
> request start timestamp only for non-passthrough requests when
> QUEUE_FLAG_STATS is enabled.
> 
> However, the latency based multipath policy uses request completion
> latency to evaluate path performance, and I/O is issued as passthrough
> requests. Since passthru requests never initialize rq->io_start_time_ns,
> their latency cannot be computed.
> 
> Record io_start_time_ns for all requests whenever QUEUE_FLAG_STATS is
> enabled.
> 
> Signed-off-by: Nilay Shroff <nilay at linux.ibm.com>
> ---
>   block/blk-mq.c | 12 +++++++-----
>   1 file changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/block/blk-mq.c b/block/blk-mq.c
> index 2c850330a32b..38922209a24f 100644
> --- a/block/blk-mq.c
> +++ b/block/blk-mq.c
> @@ -1340,12 +1340,14 @@ void blk_mq_start_request(struct request *rq)
>   
>   	trace_block_rq_issue(rq);
>   
> -	if (test_bit(QUEUE_FLAG_STATS, &q->queue_flags) &&
> -	    !blk_rq_is_passthrough(rq)) {
> +	if (test_bit(QUEUE_FLAG_STATS, &q->queue_flags)) {
>   		rq->io_start_time_ns = blk_time_get_ns();
> -		rq->stats_sectors = blk_rq_sectors(rq);
> -		rq->rq_flags |= RQF_STATS;
> -		rq_qos_issue(q, rq);
> +
> +		if (!blk_rq_is_passthrough(rq)) {
> +			rq->stats_sectors = blk_rq_sectors(rq);
> +			rq->rq_flags |= RQF_STATS;
> +			rq_qos_issue(q, rq);
> +		}
>   	}
>   
>   	WARN_ON_ONCE(blk_mq_rq_state(rq) != MQ_RQ_IDLE);

Reviewed-by: Hannes Reinecke <hare at suse.de>

Cheers,

Hannes
-- 
Dr. Hannes Reinecke                  Kernel Storage Architect
hare at suse.de                                +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich



More information about the Linux-nvme mailing list