• X
    alinux: blk-mq: fix broken io_ticks & time_in_queue update · a9ee8ebe
    Xiaoguang Wang 提交于
    fix #25369772
    
    In blk-mq device, we observed a issue that though iops is low, but iostat
    shows a very high svctm & util value, which is counter-intuitive.
    
    The root cause is that blk_account_io_start() calls part_round_stats()
    before "rq->part = part" statement, so part_round_stats() will count
    an inflight request to the whole device, but not for the specific
    partition, then it'll update whole device's io_ticks and time_in_queue
    with a stale part->stamp.
    
    To fix this issue, if a request's part is NULL, we just don't count
    it as an inflight request to the whole device.
    Signed-off-by: NXiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
    Reviewed-by: NJoseph Qi <joseph.qi@linux.alibaba.com>
    a9ee8ebe
blk-mq.c 80.6 KB