> 2023年8月24日 20:57,Mingzhe Zou <mingzhe.zou@xxxxxxxxxxxx> 写道: > > We found that after long run, the dirty_data of the bcache device > will have errors. This error cannot be eliminated unless re-register. > > We also found that reattach after detach, this error can accumulate. > > In bch_sectors_dirty_init(), all inode <= d->id keys will be recounted > again. This is wrong, we only need to count the keys of the current > device. > I will refine the commit log a bit. > Fixes: b144e45fc576 ("bcache: make bch_sectors_dirty_init() to be multithreaded") > Signed-off-by: Mingzhe Zou <mingzhe.zou@xxxxxxxxxxxx> Added into my for-next directory. Thanks for the fix up! Coly Li > --- > drivers/md/bcache/writeback.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/drivers/md/bcache/writeback.c b/drivers/md/bcache/writeback.c > index 24c049067f61..4a1079da95b2 100644 > --- a/drivers/md/bcache/writeback.c > +++ b/drivers/md/bcache/writeback.c > @@ -991,8 +991,11 @@ void bch_sectors_dirty_init(struct bcache_device *d) > op.count = 0; > > for_each_key_filter(&c->root->keys, > - k, &iter, bch_ptr_invalid) > + k, &iter, bch_ptr_invalid) { > + if (KEY_INODE(k) != op.inode) > + continue; > sectors_dirty_init_fn(&op.op, c->root, k); > + } > > rw_unlock(0, c->root); > return; > -- > 2.17.1.windows.2 >