Re: [PATCH v2] bcache: fixup init dirty data errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> 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
> 





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux ARM Kernel]     [Linux Filesystem Development]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux