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 <zhouchengm...@bytedance.com>
---
 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

Reply via email to