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
|
||||
* container. This is only needed when the metadata imposes
|
||||
* restraints of the various arrays in the container.
|
||||
|
|
Loading…
Reference in New Issue