* freeze_array and freeze_container.
*/
sysfs_freeze_array(info);
+ /* Check we have enough spares to not be degraded */
spares_needed = max(reshape.before.data_disks,
reshape.after.data_disks)
+ reshape.parity - array.raid_disks;
info->array.spare_disks);
goto release;
}
+ /* Check we have enough spares to not fail */
+ spares_needed = max(reshape.before.data_disks,
+ reshape.after.data_disks)
+ - array.raid_disks;
+ if ((info->new_level > 1 || info->new_level == 0) &&
+ spares_needed > info->array.spare_disks) {
+ fprintf(stderr,
+ Name ": Need %d spare%s to create working array,"
+ " and only have %d.\n",
+ spares_needed,
+ spares_needed == 1 ? "" : "s",
+ info->array.spare_disks);
+ goto release;
+ }
if (reshape.level != info->array.level) {
char *c = map_num(pers, reshape.level);