on 11/24/2022 2:09 AM, Tejun Heo wrote: > On Wed, Nov 23, 2022 at 02:03:52PM +0800, Kemeng Shi wrote: >> @@ -964,10 +963,8 @@ static void throtl_charge_bio(struct throtl_grp *tg, struct bio *bio) >> unsigned int bio_size = throtl_bio_data_size(bio); >> >> /* Charge the bio to the group */ >> - if (!bio_flagged(bio, BIO_BPS_THROTTLED)) { >> - tg->bytes_disp[rw] += bio_size; >> - tg->last_bytes_disp[rw] += bio_size; >> - } >> + tg->bytes_disp[rw] += bio_size; >> + tg->last_bytes_disp[rw] += bio_size; > > Are you sure this isn't gonna lead to double accounting? IIRC, the primary > purpose of this flag is avoiding duplicate accounting of bios which end up > going through the throttling path multiple times for whatever reason and > we've had numerous breakages around it. Sorry for the mistake, this change does lead to double accounting. > To address the problem you're describing in this patch, wouldn't it make > more sense to set the flag only when the bio traversed the entire tree > rather than after each tg? I will address the problem in this way in next version. Thanks for the advice. -- Best wishes Kemeng Shi