summaryrefslogtreecommitdiff
path: root/Assemble.c
diff options
context:
space:
mode:
authorAdam Kwolek <adam.kwolek@intel.com>2011-04-18 10:31:43 +1000
committerNeilBrown <neilb@suse.de>2011-04-18 10:31:43 +1000
commit7af0334155f43fc80da92cb35a37cd000ad2c56c (patch)
treed319d4d6fd57ac93cca3fa36a02161a1c10e9e56 /Assemble.c
parenta5062b1cb6ad51ebaa1f8b60e1cfe5408dbf17d7 (diff)
FIX: Count correctly added devices
When array is in reshape state raid_disks field contains final disks number. To know how many disks were added, disk.raid_disk index has to be compared against old disk number computed using delta_disks. Signed-off-by: Adam Kwolek <adam.kwolek@intel.com> Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Assemble.c')
-rw-r--r--Assemble.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/Assemble.c b/Assemble.c
index 268e248a..8b05829d 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -1516,6 +1516,7 @@ int assemble_container_content(struct supertype *st, int mdfd,
int working = 0, preexist = 0;
int expansion = 0;
struct map_ent *map = NULL;
+ int old_raid_disks;
sysfs_init(content, mdfd, 0);
@@ -1529,10 +1530,10 @@ int assemble_container_content(struct supertype *st, int mdfd,
if (sra)
sysfs_free(sra);
-
+ old_raid_disks = content->array.raid_disks - content->delta_disks;
for (dev = content->devs; dev; dev = dev->next)
if (sysfs_add_disk(content, dev, 1) == 0) {
- if (dev->disk.raid_disk >= content->array.raid_disks &&
+ if (dev->disk.raid_disk >= old_raid_disks &&
content->reshape_active)
expansion++;
else