On Wed, 26 Jan 2011 16:03:41 +0100 Adam Kwolek <adam.kwolek@xxxxxxxxx> wrote: > Problem occurs when we want to expand single disk raid0 array. > This is done via degraded 2 disks raid4 array. When new spare > is added to array, md immediately initiates recovery before > mdadm can configure and start reshape. This is due fact that 2 disk > raid4/5 array is special md case. Mdmon does nothing here because > container is blocked. > Put array in to frozen state allows mdadm to finish configuration > before reshape is executed in md. > > Signed-off-by: Adam Kwolek <adam.kwolek@xxxxxxxxx> > --- > > Grow.c | 1 + > 1 files changed, 1 insertions(+), 0 deletions(-) > > diff --git a/Grow.c b/Grow.c > index df352f8..8b9625d 100644 > --- a/Grow.c > +++ b/Grow.c > @@ -1657,6 +1657,7 @@ static int reshape_array(char *container, int > fd, char *devname, fprintf(stderr, Name ": level of %s changed to > %s\n", devname, c); > orig_level = info->array.level; > + sysfs_freeze_array(info); > } > > if (reshape.level > 0 && st->ss->external && This looks like it is in the wrong place. Surely we should freeze the array *before* we set the level - though as long as it is frozen before we add spares I suspect it works OK. I have moved the 'freeze' earlier, but I think I need to rethink all the freezing - it doesn't seem very tidy at the moment. Thanks, NeilBrown -- 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