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>
This commit is contained in:
parent
a5062b1cb6
commit
7af0334155
|
@ -1516,6 +1516,7 @@ int assemble_container_content(struct supertype *st, int mdfd,
|
||||||
int working = 0, preexist = 0;
|
int working = 0, preexist = 0;
|
||||||
int expansion = 0;
|
int expansion = 0;
|
||||||
struct map_ent *map = NULL;
|
struct map_ent *map = NULL;
|
||||||
|
int old_raid_disks;
|
||||||
|
|
||||||
sysfs_init(content, mdfd, 0);
|
sysfs_init(content, mdfd, 0);
|
||||||
|
|
||||||
|
@ -1529,10 +1530,10 @@ int assemble_container_content(struct supertype *st, int mdfd,
|
||||||
|
|
||||||
if (sra)
|
if (sra)
|
||||||
sysfs_free(sra);
|
sysfs_free(sra);
|
||||||
|
old_raid_disks = content->array.raid_disks - content->delta_disks;
|
||||||
for (dev = content->devs; dev; dev = dev->next)
|
for (dev = content->devs; dev; dev = dev->next)
|
||||||
if (sysfs_add_disk(content, dev, 1) == 0) {
|
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)
|
content->reshape_active)
|
||||||
expansion++;
|
expansion++;
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue