Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

block: set issue time stamp based on queue state

A previous commit moved RQF_IO_STAT into blk_account_io_done(), where
it's being set rather than at allocation time. Unfortunately we do check
for that flag in blk_mq_rq_time_init(), and hence setting the
start_time_ns wasn't being done. This lead to unwieldy inflight IO counts
and times, as IO completion accounting would a 0 value rather than the
issue time for it's subtraction math.

Fix this by switching the blk_mq_rq_time_init() check to use the queue
state rather than the request state.

Fixes: b8f762400ae8 ("block: move iostat check into blk_acount_io_start()")
Reported-by: kernel test robot <oliver.sang@intel.com>
Closes: https://lore.kernel.org/oe-lkp/202410062110.512391df-oliver.sang@intel.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>

+1 -1
+1 -1
block/blk-mq.c
··· 331 331 /* Set start and alloc time when the allocated request is actually used */ 332 332 static inline void blk_mq_rq_time_init(struct request *rq, u64 alloc_time_ns) 333 333 { 334 - if (blk_mq_need_time_stamp(rq)) 334 + if (blk_queue_io_stat(rq->q)) 335 335 rq->start_time_ns = blk_time_get_ns(); 336 336 else 337 337 rq->start_time_ns = 0;