Hi Jens, This one is kind of obvious, could you please also take it thru your tree? thanks, liubo On Wed, Jun 20, 2018 at 8:07 PM, Liu Bo <bo.liu@xxxxxxxxxxxxxxxxx> wrote: > When a new tg is created, tg->bio_cnt_ret_time is 0, so if the first > IO going thru this tg turns out to be a bad one, we fail to record it > in tg->bad_bio_cnt as > > if (jiffies > bio_cnt_ret_time) { > tg->bad_bio_cnt /= 2; > } > > Signed-off-by: Liu Bo <bo.liu@xxxxxxxxxxxxxxxxx> > --- > block/blk-throttle.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/block/blk-throttle.c b/block/blk-throttle.c > index 82282e6fdcf8..8bd54118dc0a 100644 > --- a/block/blk-throttle.c > +++ b/block/blk-throttle.c > @@ -2329,6 +2329,8 @@ void blk_throtl_bio_endio(struct bio *bio) > tg->bio_cnt++; > } > > + if (unlikely(!tg->bio_cnt_reset_time)) > + tg->bio_cnt_reset_time = jiffies; > if (time_after(jiffies, tg->bio_cnt_reset_time) || tg->bio_cnt > 1024) { > tg->bio_cnt_reset_time = tg->td->throtl_slice + jiffies; > tg->bio_cnt /= 2; > -- > 1.8.3.1 >