Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87d4d916 authored by Shaohua Li's avatar Shaohua Li Committed by NeilBrown
Browse files

MD: add journal with array suspended



Hot add journal disk in recovery thread context brings a lot of trouble
as IO could be running. Unlike spare disk hot add, adding journal disk
with array suspended makes more sense and implmentation is much easier.

Signed-off-by: default avatarShaohua Li <shli@fb.com>
Signed-off-by: default avatarNeilBrown <neilb@suse.com>
parent a62ab49e
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -2455,15 +2455,20 @@ static int add_bound_rdev(struct md_rdev *rdev)
{
	struct mddev *mddev = rdev->mddev;
	int err = 0;
	bool add_journal = test_bit(Journal, &rdev->flags);

	if (!mddev->pers->hot_remove_disk) {
	if (!mddev->pers->hot_remove_disk || add_journal) {
		/* If there is hot_add_disk but no hot_remove_disk
		 * then added disks for geometry changes,
		 * and should be added immediately.
		 */
		super_types[mddev->major_version].
			validate_super(mddev, rdev);
		if (add_journal)
			mddev_suspend(mddev);
		err = mddev->pers->hot_add_disk(mddev, rdev);
		if (add_journal)
			mddev_resume(mddev);
		if (err) {
			unbind_rdev_from_array(rdev);
			export_rdev(rdev);