On Thu, 8 Jun 2017, tang.junhui@xxxxxxxxxx wrote: > From: Tang Junhui <tang.junhui@xxxxxxxxxx> > > When there is not enough data in writeback cache, let the writeback rate > to be 0, and delay 30 seconds in read_dirty(). > > Signed-off-by: Tang Junhui <tang.junhui@xxxxxxxxxx> > --- > drivers/md/bcache/util.c | 17 ++++++++++++----- > drivers/md/bcache/writeback.c | 2 +- > 2 files changed, 13 insertions(+), 6 deletions(-) > > diff --git a/drivers/md/bcache/util.c b/drivers/md/bcache/util.c > index dde6172..cf750df 100644 > --- a/drivers/md/bcache/util.c > +++ b/drivers/md/bcache/util.c > @@ -15,6 +15,8 @@ > > #include "util.h" > > +#define ZERO_RATE_DELAY_NS 30*NSEC_PER_SEC > + Hi tang, If you re-submit a patch to the list with changes, please annotate [PATCH v2] so it is clear that the previous version has been replaced. Thank you for all of the patches! Please include test cases whenever possible so we understand what is being fixed. -- Eric Wheeler > #define simple_strtoint(c, end, base) simple_strtol(c, end, base) > #define simple_strtouint(c, end, base) simple_strtoul(c, end, base) > > @@ -209,13 +211,18 @@ uint64_t bch_next_delay(struct bch_ratelimit *d, uint64_t done) > { > uint64_t now = local_clock(); > > - d->next += div_u64(done * NSEC_PER_SEC, d->rate); > + if (!d->rate) { > + d->next = now + ZERO_RATE_DELAY_NS; > + } > + else { > + d->next += div_u64(done * NSEC_PER_SEC, d->rate); > > - if (time_before64(now + NSEC_PER_SEC, d->next)) > - d->next = now + NSEC_PER_SEC; > + if (time_before64(now + NSEC_PER_SEC, d->next)) > + d->next = now + NSEC_PER_SEC; > > - if (time_after64(now - NSEC_PER_SEC * 2, d->next)) > - d->next = now - NSEC_PER_SEC * 2; > + if (time_after64(now - NSEC_PER_SEC * 2, d->next)) > + d->next = now - NSEC_PER_SEC * 2; > + } > > return time_after64(d->next, now) > ? div_u64(d->next - now, NSEC_PER_SEC / HZ) > diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c > index 69e1ae5..8fac280 100644 > --- a/drivers/md/bcache/writeback.c > +++ b/drivers/md/bcache/writeback.c > @@ -60,7 +60,7 @@ static void __update_writeback_rate(struct cached_dev *dc) > > dc->writeback_rate.rate = > clamp_t(int64_t, (int64_t) dc->writeback_rate.rate + change, > - 1, NSEC_PER_MSEC); > + 0, NSEC_PER_MSEC); > > dc->writeback_rate_proportional = proportional; > dc->writeback_rate_derivative = derivative; > -- > 2.8.1.windows.1 > > > -- To unsubscribe from this list: send the line "unsubscribe linux-bcache" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html