summaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
authorGoldwyn Rodrigues <rgoldwyn@suse.com>2014-06-06 13:35:34 -0400
committerGoldwyn Rodrigues <rgoldwyn@suse.com>2015-02-23 08:30:11 -0500
commit96ae923ab659e37dd5fc1e05ecbf654e2f94bcbe (patch)
tree9a8868524e7dacb26caec999dd2a65884b22893d /drivers/md/md.c
parent54519c5f4b398bcfe599f652b4ef4004d5fa63ff (diff)
Gather on-going resync information of other nodes
When a node joins, it does not know of other nodes performing resync. So, each node keeps the resync information in it's LVB. When a new node joins, it reads the LVB of each "online" bitmap. [TODO] The new node attempts to get the PW lock on other bitmap, if it is successful, it reads the bitmap and performs the resync (if required) on it's behalf. If the node does not get the PW, it requests CR and reads the LVB for the resync information. Signed-off-by: Goldwyn Rodrigues <rgoldwyn@suse.com>
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r--drivers/md/md.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 8f310d98f082..71f655015385 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -7626,6 +7626,9 @@ void md_do_sync(struct md_thread *thread)
7626 md_new_event(mddev); 7626 md_new_event(mddev);
7627 update_time = jiffies; 7627 update_time = jiffies;
7628 7628
7629 if (mddev_is_clustered(mddev))
7630 md_cluster_ops->resync_info_update(mddev, j, max_sectors);
7631
7629 blk_start_plug(&plug); 7632 blk_start_plug(&plug);
7630 while (j < max_sectors) { 7633 while (j < max_sectors) {
7631 sector_t sectors; 7634 sector_t sectors;
@@ -7686,6 +7689,8 @@ void md_do_sync(struct md_thread *thread)
7686 j += sectors; 7689 j += sectors;
7687 if (j > 2) 7690 if (j > 2)
7688 mddev->curr_resync = j; 7691 mddev->curr_resync = j;
7692 if (mddev_is_clustered(mddev))
7693 md_cluster_ops->resync_info_update(mddev, j, max_sectors);
7689 mddev->curr_mark_cnt = io_sectors; 7694 mddev->curr_mark_cnt = io_sectors;
7690 if (last_check == 0) 7695 if (last_check == 0)
7691 /* this is the earliest that rebuild will be 7696 /* this is the earliest that rebuild will be
@@ -7746,6 +7751,9 @@ void md_do_sync(struct md_thread *thread)
7746 /* tell personality that we are finished */ 7751 /* tell personality that we are finished */
7747 mddev->pers->sync_request(mddev, max_sectors, &skipped, 1); 7752 mddev->pers->sync_request(mddev, max_sectors, &skipped, 1);
7748 7753
7754 if (mddev_is_clustered(mddev))
7755 md_cluster_ops->resync_info_update(mddev, 0, 0);
7756
7749 if (!test_bit(MD_RECOVERY_CHECK, &mddev->recovery) && 7757 if (!test_bit(MD_RECOVERY_CHECK, &mddev->recovery) &&
7750 mddev->curr_resync > 2) { 7758 mddev->curr_resync > 2) {
7751 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { 7759 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) {