Grow: restore ability to configure 'faulty' arrays via mdadm.
The big 'grow' refactor lost us the ability to configure 'faulty' arrays through --grow. So put that back as a special case. Signed-off-by: NeilBrown <neilb@suse.de>
This commit is contained in:
parent
85f102879f
commit
907ea75325
28
Grow.c
28
Grow.c
|
@ -1617,7 +1617,33 @@ int Grow_reshape(char *devname, int fd, int quiet, char *backup_file,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (array.level == LEVEL_CONTAINER) {
|
if (array.level == LEVEL_FAULTY) {
|
||||||
|
if (level != UnSet && level != array.level) {
|
||||||
|
fprintf(stderr, Name ": cannot change level of Faulty device\n");
|
||||||
|
rv =1 ;
|
||||||
|
}
|
||||||
|
if (chunksize) {
|
||||||
|
fprintf(stderr, Name ": cannot set chunksize of Faulty device\n");
|
||||||
|
rv =1 ;
|
||||||
|
}
|
||||||
|
if (raid_disks && raid_disks != 1) {
|
||||||
|
fprintf(stderr, Name ": cannot set raid_disks of Faulty device\n");
|
||||||
|
rv =1 ;
|
||||||
|
}
|
||||||
|
if (layout_str) {
|
||||||
|
if (ioctl(fd, GET_ARRAY_INFO, &array) != 0) {
|
||||||
|
dprintf("Cannot get array information.\n");
|
||||||
|
goto release;
|
||||||
|
}
|
||||||
|
array.layout = info.new_layout;
|
||||||
|
if (ioctl(fd, SET_ARRAY_INFO, &array) != 0) {
|
||||||
|
fprintf(stderr, Name ": failed to set new layout\n");
|
||||||
|
rv = 1;
|
||||||
|
} else if (!quiet)
|
||||||
|
printf("layout for %s set to %d\n",
|
||||||
|
devname, array.layout);
|
||||||
|
}
|
||||||
|
} else if (array.level == LEVEL_CONTAINER) {
|
||||||
/* This change is to be applied to every array in the
|
/* This change is to be applied to every array in the
|
||||||
* container. This is only needed when the metadata imposes
|
* container. This is only needed when the metadata imposes
|
||||||
* restraints of the various arrays in the container.
|
* restraints of the various arrays in the container.
|
||||||
|
|
Loading…
Reference in New Issue