blk-throttle: remove repeat check of elapsed time
authorKemeng Shi <shikemeng@huawei.com>
Mon, 5 Dec 2022 11:57:08 +0000 (19:57 +0800)
committerJens Axboe <axboe@kernel.dk>
Mon, 5 Dec 2022 20:45:11 +0000 (13:45 -0700)
There is no need to check elapsed time from last upgrade for each node in
hierarchy. Move this check before traversing as throtl_can_upgrade do
to remove repeat check.

Reported-by: kernel test robot <lkp@intel.com>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Kemeng Shi <shikemeng@huawei.com>
Link: https://lore.kernel.org/r/20221205115709.251489-9-shikemeng@huaweicloud.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-throttle.c

index e6a087de414dbd59db9936cc0c8374d8d686bc9e..413e668249cfed2ee49da33c7394c70d7731f86d 100644 (file)
@@ -1955,8 +1955,7 @@ static bool throtl_tg_can_downgrade(struct throtl_grp *tg)
         * If cgroup is below low limit, consider downgrade and throttle other
         * cgroups
         */
-       if (time_after_eq(now, td->low_upgrade_time + td->throtl_slice) &&
-           time_after_eq(now, tg_last_low_overflow_time(tg) +
+       if (time_after_eq(now, tg_last_low_overflow_time(tg) +
                                        td->throtl_slice) &&
            (!throtl_tg_is_idle(tg) ||
             !list_empty(&tg_to_blkg(tg)->blkcg->css.children)))
@@ -1966,6 +1965,11 @@ static bool throtl_tg_can_downgrade(struct throtl_grp *tg)
 
 static bool throtl_hierarchy_can_downgrade(struct throtl_grp *tg)
 {
+       struct throtl_data *td = tg->td;
+
+       if (time_before(jiffies, td->low_upgrade_time + td->throtl_slice))
+               return false;
+
        while (true) {
                if (!throtl_tg_can_downgrade(tg))
                        return false;