RE: [PATCH] imsm: fix: correct checking newly missing disks

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

 




Pozdrawiam,
Łukasz


> -----Original Message-----
> From: dan.j.williams@xxxxxxxxx [mailto:dan.j.williams@xxxxxxxxx] On Behalf
> Of Dan Williams
> Sent: Wednesday, November 30, 2011 3:27 AM
> To: Dorau, Lukasz
> Cc: neilb@xxxxxxx; linux-raid@xxxxxxxxxxxxxxx; Labun, Marcin; Ciechanowski, Ed
> Subject: Re: [PATCH] imsm: fix: correct checking newly missing disks
> 
> On Mon, Nov 14, 2011 at 6:52 AM, Lukasz Dorau <lukasz.dorau@xxxxxxxxx>
> wrote:
> > The problem occurs when RAID10 array under rebuild
> > (after one disk fails) is assembled incrementally.
> > Mdadm tries to start array just after adding the third disk
> > and the volume is assembled incorrectly (in degraded state).
> >
> > The cause is that container_enough depends on
> > newly missing disks which are checked incorrectly now.
> > They should be checked using always the first map.
> >
> > Signed-off-by: Lukasz Dorau <lukasz.dorau@xxxxxxxxx>
> > ---
> >  super-intel.c |    4 ++--
> >  1 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/super-intel.c b/super-intel.c
> > index 4ebee78..511a32a 100644
> > --- a/super-intel.c
> > +++ b/super-intel.c
> > @@ -2529,13 +2529,13 @@ static void getinfo_super_imsm(struct supertype
> *st, struct mdinfo *info, char *
> >
> >                failed = imsm_count_failed(super, dev);
> >                state = imsm_check_degraded(super, dev, failed);
> > -               map = get_imsm_map(dev, dev->vol.migr_state);
> > +               map = get_imsm_map(dev, 0);
> >
> >                /* any newly missing disks?
> >                 * (catches single-degraded vs double-degraded)
> >                 */
> >                for (j = 0; j < map->num_members; j++) {
> > -                       __u32 ord = get_imsm_ord_tbl_ent(dev, i, -1);
> > +                       __u32 ord = get_imsm_ord_tbl_ent(dev, i, 0);
> 
> This looks wrong.  I noticed this when looking over Przemyslaw's patch [1].
> 
> map[0] always contains the destination state of the migration so the
> most reliable source for looking for out of sync disks is map[1].
> 

I am convinced that the patch is good. 
We are looking for information what was the state of array during migration (before it was stopped), so we have to use map[0].
map[1] contains information about the state of array before migration, which we do not need.

Regards,
Lukasz

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[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