Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7a91ee1f authored by NeilBrown's avatar NeilBrown
Browse files

md: don't update curr_resync_completed without also updating reshape_position.



In order for the metadata to always be consistent, we mustn't updated
curr_resync_completed without also updating reshape_position.

The reshape code updates both at the same time.  However since
commit 97e4f42d
the common md_do_sync will sometimes update curr_resync_completed
but is not in a position to update reshape_position.
So if MD_RECOVERY_RESHAPE is set (indicating that a reshape is
happening, so reshape_position might change), don't update
curr_resync_completed in md_do_sync, leave it to the per-personality
reshape code.

Signed-off-by: default avatarNeilBrown <neilb@suse.de>
parent 848b3182
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -6362,12 +6362,13 @@ void md_do_sync(mddev_t *mddev)

		skipped = 0;

		if ((mddev->curr_resync > mddev->curr_resync_completed &&
		if (!test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) &&
		    ((mddev->curr_resync > mddev->curr_resync_completed &&
		      (mddev->curr_resync - mddev->curr_resync_completed)
		      > (max_sectors >> 4)) ||
		     (j - mddev->curr_resync_completed)*2
		     >= mddev->resync_max - mddev->curr_resync_completed
			) {
			    )) {
			/* time to update curr_resync_completed */
			blk_unplug(mddev->queue);
			wait_event(mddev->recovery_wait,