Skip to content

Commit

Permalink
md: add bitmap_abort label in md_run
Browse files Browse the repository at this point in the history
Now, there are two places need to consider about
the failure of destroy bitmap, so move the common
part between bitmap_abort and abort label.

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 617b194 commit d494549
Showing 1 changed file with 10 additions and 16 deletions.
26 changes: 10 additions & 16 deletions drivers/md/md.c
Original file line number Diff line number Diff line change
Expand Up @@ -5666,15 +5666,8 @@ int md_run(struct mddev *mddev)
mddev->bitmap = bitmap;

}
if (err) {
mddev_detach(mddev);
if (mddev->private)
pers->free(mddev, mddev->private);
mddev->private = NULL;
module_put(pers->owner);
md_bitmap_destroy(mddev);
goto abort;
}
if (err)
goto bitmap_abort;

if (mddev->bitmap_info.max_write_behind > 0) {
bool creat_pool = false;
Expand All @@ -5690,13 +5683,7 @@ int md_run(struct mddev *mddev)
sizeof(struct wb_info));
if (!mddev->wb_info_pool) {
err = -ENOMEM;
mddev_detach(mddev);
if (mddev->private)
pers->free(mddev, mddev->private);
mddev->private = NULL;
module_put(pers->owner);
md_bitmap_destroy(mddev);
goto abort;
goto bitmap_abort;
}
}
}
Expand Down Expand Up @@ -5761,6 +5748,13 @@ int md_run(struct mddev *mddev)
sysfs_notify(&mddev->kobj, NULL, "degraded");
return 0;

bitmap_abort:
mddev_detach(mddev);
if (mddev->private)
pers->free(mddev, mddev->private);
mddev->private = NULL;
module_put(pers->owner);
md_bitmap_destroy(mddev);
abort:
bioset_exit(&mddev->bio_set);
bioset_exit(&mddev->sync_set);
Expand Down

0 comments on commit d494549

Please sign in to comment.