diff options
Diffstat (limited to 'drivers/md/raid10.c')
-rw-r--r-- | drivers/md/raid10.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c index 1edd58a3098b..b98e746e7fc4 100644 --- a/drivers/md/raid10.c +++ b/drivers/md/raid10.c @@ -4785,8 +4785,14 @@ static void end_reshape(struct r10conf *conf) static void raid10_update_reshape_pos(struct mddev *mddev) { struct r10conf *conf = mddev->private; + sector_t lo, hi; - conf->reshape_progress = mddev->reshape_position; + md_cluster_ops->resync_info_get(mddev, &lo, &hi); + if (((mddev->reshape_position <= hi) && (mddev->reshape_position >= lo)) + || mddev->reshape_position == MaxSector) + conf->reshape_progress = mddev->reshape_position; + else + WARN_ON_ONCE(1); } static int handle_reshape_read_error(struct mddev *mddev, |