summaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
authorGoldwyn Rodrigues <rgoldwyn@suse.de>2015-04-14 11:44:44 -0400
committerNeilBrown <neilb@suse.de>2015-04-21 17:59:39 -0400
commit88bcfef7be513e8bf5448e0025330fdd97c4c708 (patch)
tree68cb889fecc9ab303a798bf9b43130701bb34460 /drivers/md/md.c
parent57d051dccaef395e0d8c0fff02cfc3a77bacc88c (diff)
md-cluster: remove capabilities
This adds "remove" capabilities for the clustered environment. When a user initiates removal of a device from the array, a REMOVE message with disk number in the array is sent to all the nodes which kick the respective device in their own array. This facilitates the removal of failed devices. Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com> Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r--drivers/md/md.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index d406a79f9140..ca011d1d1de7 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2477,8 +2477,10 @@ state_store(struct md_rdev *rdev, const char *buf, size_t len)
2477 else { 2477 else {
2478 struct mddev *mddev = rdev->mddev; 2478 struct mddev *mddev = rdev->mddev;
2479 if (mddev_is_clustered(mddev)) 2479 if (mddev_is_clustered(mddev))
2480 md_cluster_ops->metadata_update_start(mddev); 2480 md_cluster_ops->remove_disk(mddev, rdev);
2481 md_kick_rdev_from_array(rdev); 2481 md_kick_rdev_from_array(rdev);
2482 if (mddev_is_clustered(mddev))
2483 md_cluster_ops->metadata_update_start(mddev);
2482 if (mddev->pers) 2484 if (mddev->pers)
2483 md_update_sb(mddev, 1); 2485 md_update_sb(mddev, 1);
2484 md_new_event(mddev); 2486 md_new_event(mddev);
@@ -5968,6 +5970,9 @@ static int hot_remove_disk(struct mddev *mddev, dev_t dev)
5968 if (rdev->raid_disk >= 0) 5970 if (rdev->raid_disk >= 0)
5969 goto busy; 5971 goto busy;
5970 5972
5973 if (mddev_is_clustered(mddev))
5974 md_cluster_ops->remove_disk(mddev, rdev);
5975
5971 md_kick_rdev_from_array(rdev); 5976 md_kick_rdev_from_array(rdev);
5972 md_update_sb(mddev, 1); 5977 md_update_sb(mddev, 1);
5973 md_new_event(mddev); 5978 md_new_event(mddev);