Re: [PATCH] raid5: need to set STRIPE_HANDLE for batch head

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

 



On Mon, Dec 2, 2019 at 5:18 PM Xiao Ni <xni@xxxxxxxxxx> wrote:
>
>
>
> On 11/28/2019 12:57 AM, jgq516@xxxxxxxxx wrote:
> > From: Guoqing Jiang <guoqing.jiang@xxxxxxxxxxxxxxx>
> >
> > With commit 6ce220dd2f8ea71d6afc29b9a7524c12e39f374a ("raid5: don't set
> > STRIPE_HANDLE to stripe which is in batch list"), we don't want to set
> > STRIPE_HANDLE flag for sh which is already in batch list.
> >
> > However, the stripe which is the head of batch list should set this flag,
> > otherwise panic could happen inside init_stripe at BUG_ON(sh->batch_head),
> > it is reproducible with raid5 on top of nvdimm devices per Xiao oberserved.
> >
> > Thanks for Xiao's effort to verify the change.
> >
> > Fixes: 6ce220dd2f8ea ("raid5: don't set STRIPE_HANDLE to stripe which is in batch list")
> > Reported-by: Xiao Ni <xni@xxxxxxxxxx>
> > Signed-off-by: Guoqing Jiang <guoqing.jiang@xxxxxxxxxxxxxxx>
> > ---
> >   drivers/md/raid5.c | 2 +-
> >   1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
> > index f0fc538bfe59..d4d3b67ffbba 100644
> > --- a/drivers/md/raid5.c
> > +++ b/drivers/md/raid5.c
> > @@ -5726,7 +5726,7 @@ static bool raid5_make_request(struct mddev *mddev, struct bio * bi)
> >                               do_flush = false;
> >                       }
> >
> > -                     if (!sh->batch_head)
> > +                     if (!sh->batch_head || sh == sh->batch_head)
> >                               set_bit(STRIPE_HANDLE, &sh->state);
> >                       clear_bit(STRIPE_DELAYED, &sh->state);
> >                       if ((!sh->batch_head || sh == sh->batch_head) &&
>
> Tested-by: Xiao Ni <xni@xxxxxxxxxx>

Applied to md-fixes. Thanks!

Song



[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