Thread (29 messages) 29 messages, 3 authors, 2015-07-29

Re: [PATCH 11/12] md-cluster: Read the disk bitmap sb and check if it needs recovery

From: Goldwyn Rodrigues <hidden>
Date: 2015-07-27 16:31:43


On 07/10/2015 04:01 AM, Guoqing Jiang wrote:
In gather_all_resync_info, we need to read the disk bitmap sb and
check if it needs recovery.

Signed-off-by: Guoqing Jiang <redacted>

Reviewed-by: Goldwyn Rodrigues <redacted>
quoted hunk ↗ jump to hunk
---
  drivers/md/md-cluster.c | 16 +++++++++++++++-
  1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/drivers/md/md-cluster.c b/drivers/md/md-cluster.c
index 29f65e2..c35a03a 100644
--- a/drivers/md/md-cluster.c
+++ b/drivers/md/md-cluster.c
@@ -625,6 +625,7 @@ static int gather_all_resync_info(struct mddev *mddev, int total_slots)
  	struct dlm_lock_resource *bm_lockres;
  	struct suspend_info *s;
  	char str[64];
+	sector_t lo, hi;


  	for (i = 0; i < total_slots; i++) {
@@ -659,7 +660,20 @@ static int gather_all_resync_info(struct mddev *mddev, int total_slots)
  			lockres_free(bm_lockres);
  			goto out;
  		}
-		/* TODO: Read the disk bitmap sb and check if it needs recovery */
+
+		/* Read the disk bitmap sb and check if it needs recovery */
+		ret = bitmap_copy_from_slot(mddev, i, &lo, &hi, false);
+		if (ret) {
+			pr_warn("md-cluster: Could not gather bitmaps from slot %d", i);
+			lockres_free(bm_lockres);
+			continue;
+		}
+		if ((hi > 0) && (lo < mddev->recovery_cp)) {
+			set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);
+			mddev->recovery_cp = lo;
+			md_check_recovery(mddev);
+		}
+
  		dlm_unlock_sync(bm_lockres);
  		lockres_free(bm_lockres);
  	}
-- 
Goldwyn
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help