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

Commit 3d25b7f5 authored by Song Liu's avatar Song Liu Committed by Greg Kroah-Hartman
Browse files

Revert "Don't jump to compute_result state from check_result state"



commit a25d8c327bb41742dbd59f8c545f59f3b9c39983 upstream.

This reverts commit 4f4fd7c5798bbdd5a03a60f6269cf1177fbd11ef.

Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Nigel Croxon <ncroxon@redhat.com>
Cc: Xiao Ni <xni@redhat.com>
Signed-off-by: default avatarSong Liu <songliubraving@fb.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent a0b1dde1
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -4221,15 +4221,26 @@ static void handle_parity_checks6(struct r5conf *conf, struct stripe_head *sh,
	case check_state_check_result:
		sh->check_state = check_state_idle;

		if (s->failed > 1)
			break;
		/* handle a successful check operation, if parity is correct
		 * we are done.  Otherwise update the mismatch count and repair
		 * parity if !MD_RECOVERY_CHECK
		 */
		if (sh->ops.zero_sum_result == 0) {
			/* Any parity checked was correct */
			/* both parities are correct */
			if (!s->failed)
				set_bit(STRIPE_INSYNC, &sh->state);
			else {
				/* in contrast to the raid5 case we can validate
				 * parity, but still have a failure to write
				 * back
				 */
				sh->check_state = check_state_compute_result;
				/* Returning at this point means that we may go
				 * off and bring p and/or q uptodate again so
				 * we make sure to check zero_sum_result again
				 * to verify if p or q need writeback
				 */
			}
		} else {
			atomic64_add(STRIPE_SECTORS, &conf->mddev->resync_mismatches);
			if (test_bit(MD_RECOVERY_CHECK, &conf->mddev->recovery)) {