The last else branch of current code may have not io waited in iocg, in which case we should not inc nr_shortages, or the device vrate will speed up even this iocg is not shortage of vtime. Signed-off-by: Chengming Zhou <zhouchengming@xxxxxxxxxxxxx> --- block/blk-iocost.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block/blk-iocost.c b/block/blk-iocost.c index 86ba6fd254e1..ce68b5749364 100644 --- a/block/blk-iocost.c +++ b/block/blk-iocost.c @@ -1485,7 +1485,7 @@ static void ioc_timer_fn(struct timer_list *timer) __propagate_active_weight(iocg, iocg->weight, new_inuse); } - } else { + } else if (waitqueue_active(&iocg->waitq)) { /* genuninely out of vtime */ nr_shortages++; } -- 2.20.1