Commit 54a88392 authored by Goldwyn Rodrigues's avatar Goldwyn Rodrigues Committed by NeilBrown
Browse files

md-cluster: Fix the remove sequence with the new MD reload code



The remove disk message does not need metadata_update_start(), but
can be an independent message.

Signed-off-by: default avatarGoldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by: default avatarGuoqing Jiang <gqjiang@suse.com>
Signed-off-by: default avatarNeilBrown <neilb@suse.com>
parent 659b254f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -997,7 +997,7 @@ static int remove_disk(struct mddev *mddev, struct md_rdev *rdev)
	struct md_cluster_info *cinfo = mddev->cluster_info;
	cmsg.type = cpu_to_le32(REMOVE);
	cmsg.raid_slot = cpu_to_le32(rdev->desc_nr);
	return __sendmsg(cinfo, &cmsg);
	return sendmsg(cinfo, &cmsg);
}

static int gather_bitmaps(struct md_rdev *rdev)
+1 −8
Original line number Diff line number Diff line
@@ -6134,15 +6134,11 @@ static int hot_remove_disk(struct mddev *mddev, dev_t dev)
{
	char b[BDEVNAME_SIZE];
	struct md_rdev *rdev;
	int ret = -1;

	rdev = find_rdev(mddev, dev);
	if (!rdev)
		return -ENXIO;

	if (mddev_is_clustered(mddev))
		ret = md_cluster_ops->metadata_update_start(mddev);

	if (rdev->raid_disk < 0)
		goto kick_rdev;

@@ -6153,7 +6149,7 @@ static int hot_remove_disk(struct mddev *mddev, dev_t dev)
		goto busy;

kick_rdev:
	if (mddev_is_clustered(mddev) && ret == 0)
	if (mddev_is_clustered(mddev))
		md_cluster_ops->remove_disk(mddev, rdev);

	md_kick_rdev_from_array(rdev);
@@ -6162,9 +6158,6 @@ kick_rdev:

	return 0;
busy:
	if (mddev_is_clustered(mddev) && ret == 0)
		md_cluster_ops->metadata_update_cancel(mddev);

	printk(KERN_WARNING "md: cannot remove active disk %s from %s ...\n",
		bdevname(rdev->bdev,b), mdname(mddev));
	return -EBUSY;