diff options
author | Goldwyn Rodrigues <rgoldwyn@suse.com> | 2015-12-20 18:51:00 -0500 |
---|---|---|
committer | NeilBrown <neilb@suse.com> | 2016-01-05 19:38:42 -0500 |
commit | 54a88392cdd84b4a739ce3a986bfabfaff67d9d2 (patch) | |
tree | 790237579c448bc12a4f7be7f19dd6dc81815c61 /drivers/md/md.c | |
parent | 659b254fa7392e32b59a30d4b61fb12c4cd440ff (diff) |
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: Goldwyn Rodrigues <rgoldwyn@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
Signed-off-by: NeilBrown <neilb@suse.com>
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r-- | drivers/md/md.c | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index 198e29dffb98..ab3995de0418 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -6134,15 +6134,11 @@ static int hot_remove_disk(struct mddev *mddev, dev_t dev) | |||
6134 | { | 6134 | { |
6135 | char b[BDEVNAME_SIZE]; | 6135 | char b[BDEVNAME_SIZE]; |
6136 | struct md_rdev *rdev; | 6136 | struct md_rdev *rdev; |
6137 | int ret = -1; | ||
6138 | 6137 | ||
6139 | rdev = find_rdev(mddev, dev); | 6138 | rdev = find_rdev(mddev, dev); |
6140 | if (!rdev) | 6139 | if (!rdev) |
6141 | return -ENXIO; | 6140 | return -ENXIO; |
6142 | 6141 | ||
6143 | if (mddev_is_clustered(mddev)) | ||
6144 | ret = md_cluster_ops->metadata_update_start(mddev); | ||
6145 | |||
6146 | if (rdev->raid_disk < 0) | 6142 | if (rdev->raid_disk < 0) |
6147 | goto kick_rdev; | 6143 | goto kick_rdev; |
6148 | 6144 | ||
@@ -6153,7 +6149,7 @@ static int hot_remove_disk(struct mddev *mddev, dev_t dev) | |||
6153 | goto busy; | 6149 | goto busy; |
6154 | 6150 | ||
6155 | kick_rdev: | 6151 | kick_rdev: |
6156 | if (mddev_is_clustered(mddev) && ret == 0) | 6152 | if (mddev_is_clustered(mddev)) |
6157 | md_cluster_ops->remove_disk(mddev, rdev); | 6153 | md_cluster_ops->remove_disk(mddev, rdev); |
6158 | 6154 | ||
6159 | md_kick_rdev_from_array(rdev); | 6155 | md_kick_rdev_from_array(rdev); |
@@ -6162,9 +6158,6 @@ kick_rdev: | |||
6162 | 6158 | ||
6163 | return 0; | 6159 | return 0; |
6164 | busy: | 6160 | busy: |
6165 | if (mddev_is_clustered(mddev) && ret == 0) | ||
6166 | md_cluster_ops->metadata_update_cancel(mddev); | ||
6167 | |||
6168 | printk(KERN_WARNING "md: cannot remove active disk %s from %s ...\n", | 6161 | printk(KERN_WARNING "md: cannot remove active disk %s from %s ...\n", |
6169 | bdevname(rdev->bdev,b), mdname(mddev)); | 6162 | bdevname(rdev->bdev,b), mdname(mddev)); |
6170 | return -EBUSY; | 6163 | return -EBUSY; |