blk-iocost: skip empty flush bio in iocost
authorChengming Zhou <zhouchengming@bytedance.com>
Thu, 20 Jul 2023 12:14:41 +0000 (20:14 +0800)
committerJens Axboe <axboe@kernel.dk>
Thu, 20 Jul 2023 20:02:17 +0000 (14:02 -0600)
commit013adcbef165c3eaf73e297b7482290593815ab8
treed77db7d2a95838ded238014a282ccac04874e64c
parent3641c90c4e369c8d0af5483e879174400a152cf8
blk-iocost: skip empty flush bio in iocost

The flush bio may have data, may have no data (empty flush), we couldn't
calculate cost for empty flush bio. So we'd better just skip it for now.

Another side effect is that empty flush bio's bio_end_sector() is 0, cause
iocg->cursor reset to 0, may break the cost calculation of other bios.

This isn't good enough, since flush bio still consume the device bandwidth,
but flush request is special, can be merged randomly in the flush state
machine, we don't know how to calculate cost for it for now.

Its completion time also has flaws, which may include the pre-flush or
post-flush completion time, but I don't know if we need to fix that and
how to fix it.

Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
Acked-by: Tejun Heo <tj@kernel.org>
Link: https://lore.kernel.org/r/20230720121441.1408522-1-chengming.zhou@linux.dev
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-iocost.c