On Thu 2019-05-23 21:06:47, Greg Kroah-Hartman wrote:
> From: Song Liu <[email protected]>
> 
> commit a25d8c327bb41742dbd59f8c545f59f3b9c39983 upstream.
> 
> This reverts commit 4f4fd7c5798bbdd5a03a60f6269cf1177fbd11ef.
> 
> Cc: Dan Williams <[email protected]>
> Cc: Nigel Croxon <[email protected]>
> Cc: Xiao Ni <[email protected]>
> Signed-off-by: Song Liu <[email protected]>
> Signed-off-by: Greg Kroah-Hartman <[email protected]>

We normally reject patches without changelog, and this has none. Why
make exception here?

                                                                        Pavel

> 
> ---
>  drivers/md/raid5.c |   19 +++++++++++++++----
>  1 file changed, 15 insertions(+), 4 deletions(-)
> 
> --- a/drivers/md/raid5.c
> +++ b/drivers/md/raid5.c
> @@ -4221,15 +4221,26 @@ static void handle_parity_checks6(struct
>       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 */
> -                     set_bit(STRIPE_INSYNC, &sh->state);
> +                     /* 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)) {
> 

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

Reply via email to