On Tue, 6 Dec 2011 23:07:53 +0200 Alexander Lyakas <alex.bolshoy@xxxxxxxxx> wrote: > Thanks, Neil!!! > Looks like this patch solves the issue. I applied it manually though, > for some reason git refused to apply it. > > Thanks again for great help, > Alex. Great. Thanks for the confirmation. NeilBrown > > > On Tue, Dec 6, 2011 at 5:16 AM, NeilBrown <neilb@xxxxxxx> wrote: > > On Sun, 27 Nov 2011 11:56:17 +0200 Alexander Lyakas <alex.bolshoy@xxxxxxxxx> > > wrote: > > > >> Hello Neil, > >> we have compiled the natty kernel with dynamic debugging enabled for > >> raid456, and reproduced the problem. > >> The kernel log is available at > >> https://docs.google.com/open?id=0B9rmyUifdvMLMzk1YjYwZDUtYzhhYi00MDRlLTkzYjItMDM0Y2ZhZmU3ZDRk > >> > >> Some more information: > >> - array was created at Nov 27 11:28:03 > >> - manual drive failure was issued at 11:28:09 > >> > >> Please let me know if you need any additional information. > >> > > > > Hi, > > sorry for the long delay, I've had a lot of distractions this past week. > > > > I looks like you are hitting the bug fixed by upstream commit > > 355840e7a7e56bb2834fd3b0da64da5465f8aeaa > > > > The symptoms are slightly different to those described in that commit but I'm > > sure the root problem is the same. > > > > That patch doesn't apply to 2.6.38 though. > > Use this one. > > > > NeilBrown > > > > diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c > > index 78536fd..8144126 100644 > > --- a/drivers/md/raid5.c > > +++ b/drivers/md/raid5.c > > @@ -3086,7 +3086,7 @@ static void handle_stripe5(struct stripe_head *sh) > > /* Not in-sync */; > > else if (test_bit(In_sync, &rdev->flags)) > > set_bit(R5_Insync, &dev->flags); > > - else { > > + else if (!test_bit(Faulty, &rdev->flags)) { > > /* could be in-sync depending on recovery/reshape status */ > > if (sh->sector + STRIPE_SECTORS <= rdev->recovery_offset) > > set_bit(R5_Insync, &dev->flags); > > @@ -3377,7 +3377,7 @@ static void handle_stripe6(struct stripe_head *sh) > > /* Not in-sync */; > > else if (test_bit(In_sync, &rdev->flags)) > > set_bit(R5_Insync, &dev->flags); > > - else { > > + else if (!test_bit(Faulty, &rdev->flags)) { > > /* in sync if before recovery_offset */ > > if (sh->sector + STRIPE_SECTORS <= rdev->recovery_offset) > > set_bit(R5_Insync, &dev->flags);
Attachment:
signature.asc
Description: PGP signature