• Jeffle Xu's avatar
    block: fix inflight statistics of part0 · b0d97557
    Jeffle Xu authored
    The inflight of partition 0 doesn't include inflight IOs to all
    sub-partitions, since currently mq calculates inflight of specific
    partition by simply camparing the value of the partition pointer.
    
    Thus the following case is possible:
    
    $ cat /sys/block/vda/inflight
           0        0
    $ cat /sys/block/vda/vda1/inflight
           0      128
    
    While single queue device (on a previous version, e.g. v3.10) has no
    this issue:
    
    $cat /sys/block/sda/sda3/inflight
           0       33
    $cat /sys/block/sda/inflight
           0       33
    
    Partition 0 should be specially handled since it represents the whole
    disk. This issue is introduced since commit bf0ddaba ("blk-mq: fix
    sysfs inflight counter").
    
    Besides, this patch can also fix the inflight statistics of part 0 in
    /proc/diskstats. Before this patch, the inflight statistics of part 0
    doesn't include that of sub partitions. (I have marked the 'inflight'
    field with asterisk.)
    
    $cat /proc/diskstats
     259       0 nvme0n1 45974469 0 367814768 6445794 1 0 1 0 *0* 111062 6445794 0 0 0 0 0 0
     259       2 nvme0n1p1 45974058 0 367797952 6445727 0 0 0 0 *33* 111001 6445727 0 0 0 0 0 0
    
    This is introduced since commit f299b7c7 ("blk-mq: provide internal
    in-flight variant").
    
    Fixes: bf0ddaba ("blk-mq: fix sysfs inflight counter")
    Fixes: f299b7c7 ("blk-mq: provide internal in-flight variant")
    Signed-off-by: default avatarJeffle Xu <jefflexu@linux.alibaba.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    [axboe: adapt for 5.11 partition change]
    Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
    b0d97557
blk-mq.c 97.4 KB