From: NeilBrown Date: Wed, 9 Mar 2011 07:30:03 +0000 (+1100) Subject: Grow: allow a RAID1 to be reshaped directly to 3-drive RAID5 X-Git-Tag: mdadm-3.2.1~82 X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=commitdiff_plain;h=5652f2d9cec5f03a698a86ef31700277e8699dc8 Grow: allow a RAID1 to be reshaped directly to 3-drive RAID5 Self-tests require this but code didn't allow it any more. Signed-off-by: NeilBrown --- diff --git a/Grow.c b/Grow.c index 88c8ad75..387bdbd5 100644 --- a/Grow.c +++ b/Grow.c @@ -952,13 +952,17 @@ char *analyse_change(struct mdinfo *info, struct reshape *re) } if (info->array.raid_disks == 2 && info->new_level == 5) { - if (info->delta_disks != UnSet && - info->delta_disks != 0) - return "Cannot change number of disks " - "with RAID1->RAID5 conversion"; + re->level = 5; re->before.data_disks = 1; - re->after.data_disks = 1; + if (info->delta_disks != UnSet && + info->delta_disks != 0) + re->after.data_disks = 1 + info->delta_disks; + else + re->after.data_disks = 1; + if (re->after.data_disks < 1) + return "Number of disks too small for RAID5"; + re->before.layout = ALGORITHM_LEFT_SYMMETRIC; info->array.chunk_size = 65536; break;