[PATCH] md: raid5: update suspend_hi during the reshape

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch is required by checkpointing for external metadata functionality.

When performing external reshape it is needed to move suspend_hi forward to keep up with the current reshape_position.

Signed-off-by: Maciej Trela <maciej.trela@xxxxxxxxx>
---

 drivers/md/raid5.c |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 53d7579..353c7c6 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -4353,6 +4353,14 @@ static sector_t reshape_request(mddev_t *mddev, sector_t sector_nr, int *skipped
 		wake_up(&conf->wait_for_overlap);
 		sysfs_notify(&mddev->kobj, NULL, "sync_completed");
 	}
+	if (mddev->external && mddev->reshape_position > mddev->suspend_hi) {
+		if (mddev->reshape_position == MaxSector)
+			mddev->suspend_hi = 0;
+		else
+			mddev->suspend_hi = mddev->reshape_position;
+		mddev->pers->quiesce(mddev, 1);
+		mddev->pers->quiesce(mddev, 0);
+	}
 	return reshape_sectors;
 }
 
@@ -5691,6 +5699,12 @@ static void raid5_finish_reshape(mddev_t *mddev)
 		mddev->chunk_sectors = conf->chunk_sectors;
 		mddev->reshape_position = MaxSector;
 		mddev->delta_disks = 0;
+
+		if (mddev->external) {
+			mddev->suspend_hi = 0;
+			mddev->pers->quiesce(mddev, 1);
+			mddev->pers->quiesce(mddev, 0);
+		}
 	}
 }
 

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux