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. 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? Thanks. -- tejun