md-bitmap: create and destroy wb_info_pool with the change of bitmap
The write-behind attribute is part of bitmap, since bitmap can be added/removed dynamically with the following. 1. mdadm --grow /dev/md0 --bitmap=none 2. mdadm --grow /dev/md0 --bitmap=internal --write-behind So we need to destroy wb_info_pool in md_bitmap_destroy, and create the pool before load bitmap. Reviewed-by: NeilBrown <neilb@suse.com> Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Song Liu <songliubraving@fb.com>
This commit is contained in:
parent
10c92fca63
commit
617b194a13
|
@ -1790,6 +1790,8 @@ void md_bitmap_destroy(struct mddev *mddev)
|
|||
return;
|
||||
|
||||
md_bitmap_wait_behind_writes(mddev);
|
||||
mempool_destroy(mddev->wb_info_pool);
|
||||
mddev->wb_info_pool = NULL;
|
||||
|
||||
mutex_lock(&mddev->bitmap_info.mutex);
|
||||
spin_lock(&mddev->lock);
|
||||
|
@ -1900,10 +1902,14 @@ int md_bitmap_load(struct mddev *mddev)
|
|||
sector_t start = 0;
|
||||
sector_t sector = 0;
|
||||
struct bitmap *bitmap = mddev->bitmap;
|
||||
struct md_rdev *rdev;
|
||||
|
||||
if (!bitmap)
|
||||
goto out;
|
||||
|
||||
rdev_for_each(rdev, mddev)
|
||||
mddev_create_wb_pool(mddev, rdev, true);
|
||||
|
||||
if (mddev_is_clustered(mddev))
|
||||
md_cluster_ops->load_bitmaps(mddev, mddev->bitmap_info.nodes);
|
||||
|
||||
|
|
Loading…
Reference in a new issue