Skip to content

Commit

Permalink
md-bitmap: create and destroy wb_info_pool with the change of bitmap
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Guoqing Jiang authored and Song Liu committed Jun 20, 2019
1 parent 10c92fc commit 617b194
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions drivers/md/md-bitmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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);

Expand Down

0 comments on commit 617b194

Please sign in to comment.