On Wednesday September 5, [EMAIL PROTECTED] wrote:
> Dear Neil,
> 
> > I can see what the problem is.  It will take a little while to figure
> > out what the "correct" fix it, but a quick fix to get you out of
> > trouble would be to remove the lines:
> >
> >             if (info->array.utime > __le64_to_cpu(bsb.mtime) + 3600 ||
> >                 info->array.utime < __le64_to_cpu(bsb.mtime))
> >                     continue; /* time stamp is too bad */
> 
> I've applied the patch that you suggested but I'm getting exactly the  
> same result:
> 
> > [EMAIL PROTECTED]:~/mdadm-2.6.3# ./mdadm --assemble /dev/md1
> > mdadm: Failed to restore critical section for reshape, sorry.
> 
> Please advise me on any more information that I should provide or  
> make any other suggestions/advices.
> 

At the top of Grow_restart (in Grow.c), just put
        return 0;

That will definitely get you your array back.
I think the correct fix will be to put:

    if (info->reshape_progress > SOME_NUMBER)
        return 0;

at the top of Grow_restart.  I just have to review exactly how it
works to make sure I pick the correct "SOME_NUMBER".

Also
                if (__le64_to_cpu(bsb.length) <
                    info->reshape_progress)
                        continue; /* No new data here */

might need to become
                if (__le64_to_cpu(bsb.length) <
                    info->reshape_progress)
                        return 0; /* No new data here */

but I need to think carefully about that too.

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

Reply via email to