On Mon, Oct 17, 2022 at 10:00:09AM +0800, Kemeng Shi wrote: > The old_hwi is already max hweight_inuse if iocg->inuse == iocg->active. > Remove unnecessary calculation. > > Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxx> > --- > block/blk-iocost.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/block/blk-iocost.c b/block/blk-iocost.c > index 96c1571a8a1d..fa90f471dfdc 100644 > --- a/block/blk-iocost.c > +++ b/block/blk-iocost.c > @@ -2299,7 +2299,10 @@ static void ioc_timer_fn(struct timer_list *timer) > * Determine the donation amount. > */ > current_hweight(iocg, &hwa, &old_hwi); > - hwm = current_hweight_max(iocg); > + if (iocg->inuse == iocg->active) > + hwm = old_hwi; > + else > + hwm = current_hweight_max(iocg); I don't think this is correct. The intermediate nodes might be donating. This also isn't a meaningful optimization given that it's in the cold periodic timer path. I'd much rather keep the code simpler unless the performance benfeit can be clearly demonstrated. Thanks. -- tejun