diff --git a/block/blk-iocost.c b/block/blk-iocost.c index e7d5aafa5e99..75eb90b3241e 100644 --- a/block/blk-iocost.c +++ b/block/blk-iocost.c @@ -907,7 +907,10 @@ static void __propagate_active_weight(struct ioc_gq *iocg, u32 active, u32 inuse lockdep_assert_held(&ioc->lock); - inuse = min(active, inuse); + inuse = clamp_t(u32, inuse, 1, active); + + if (active == iocg->active && inuse == iocg->inuse) + return; for (lvl = iocg->level - 1; lvl >= 0; lvl--) { struct ioc_gq *parent = iocg->ancestors[lvl];