From e0783b419d674815e548960167dd02952900c4a6 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Mon, 15 Sep 2008 20:55:40 -0700 Subject: [PATCH] imsm: fix up spare handling holdover in update_create_array We used to leave SPARE_DISK unset to indicate it was available to be assimilated into other arrays. Now we explicitly check the size. Signed-off-by: Dan Williams --- super-intel.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/super-intel.c b/super-intel.c index e54871a..b4bcb28 100644 --- a/super-intel.c +++ b/super-intel.c @@ -2833,12 +2833,11 @@ static void imsm_process_update(struct supertype *st, dev = update->space; update->space = NULL; imsm_copy_dev(dev, &u->dev); + map = get_imsm_map(dev, 0); super->dev_tbl[u->dev_idx] = dev; mpb->num_raid_devs++; - /* fix up flags, if arrays overlap then the drives can not be - * spares - */ + /* fix up flags */ for (i = 0; i < map->num_members; i++) { struct imsm_disk *disk; __u32 status; @@ -2846,8 +2845,7 @@ static void imsm_process_update(struct supertype *st, disk = get_imsm_disk(super, get_imsm_disk_idx(map, i)); status = __le32_to_cpu(disk->status); status |= CONFIGURED_DISK; - if (overlap) - status &= ~SPARE_DISK; + status &= ~SPARE_DISK; disk->status = __cpu_to_le32(status); } break;