summaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
authorGoldwyn Rodrigues <rgoldwyn@suse.com>2015-12-20 18:51:00 -0500
committerNeilBrown <neilb@suse.com>2016-01-05 19:38:42 -0500
commit54a88392cdd84b4a739ce3a986bfabfaff67d9d2 (patch)
tree790237579c448bc12a4f7be7f19dd6dc81815c61 /drivers/md/md.c
parent659b254fa7392e32b59a30d4b61fb12c4cd440ff (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.c9
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
6155kick_rdev: 6151kick_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;
6164busy: 6160busy:
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;