diff options
author | Guoqing Jiang <gqjiang@suse.com> | 2015-07-10 11:54:04 +0300 |
---|---|---|
committer | NeilBrown <neilb@suse.com> | 2015-08-31 20:41:12 +0300 |
commit | dc737d7c3d62d2cd2b62c7739aaa7604330c3dd8 (patch) | |
tree | eb08d1d362a790b99afa255464a0db3741558362 /drivers/md/md.c | |
parent | 05cd0e51769a51f53c68e83976c83653f6ab1595 (diff) | |
download | linux-dc737d7c3d62d2cd2b62c7739aaa7604330c3dd8.tar.xz |
md-cluster: transfer the resync ownership to another node
When node A stops an array while the array is doing a resync, we need
to let another node B take over the resync task.
To achieve the goal, we need the A send an explicit BITMAP_NEEDS_SYNC
message to the cluster. And the node B which received that message will
invoke __recover_slot to do resync.
Reviewed-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 | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c index cdc080bf09d4..c0637603a391 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -7959,9 +7959,6 @@ void md_do_sync(struct md_thread *thread) /* tell personality that we are finished */ mddev->pers->sync_request(mddev, max_sectors, &skipped); - if (mddev_is_clustered(mddev)) - md_cluster_ops->resync_finish(mddev); - if (!test_bit(MD_RECOVERY_CHECK, &mddev->recovery) && mddev->curr_resync > 2) { if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { @@ -7995,6 +7992,9 @@ void md_do_sync(struct md_thread *thread) } } skip: + if (mddev_is_clustered(mddev)) + md_cluster_ops->resync_finish(mddev); + set_bit(MD_CHANGE_DEVS, &mddev->flags); spin_lock(&mddev->lock); |