]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
FIX: Make expansion counter usable
authorAdam Kwolek <adam.kwolek@intel.com>
Wed, 9 Mar 2011 22:58:35 +0000 (09:58 +1100)
committerNeilBrown <neilb@suse.de>
Wed, 9 Mar 2011 22:58:35 +0000 (09:58 +1100)
Currently whole array geometry is set in sysfs_set_array(),
so none of disks (even for expansion) should fail during sysfs_add_disk()
Due to this expansion counter should be used for reshaped array when
disk slot is bigger than number of disks in array.

Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Assemble.c

index fe917b27de2cdf928d9d0d820348b94268955101..0ffbbc9a22acf265fa56f5eee9dca191c0127490 100644 (file)
@@ -1526,13 +1526,14 @@ int assemble_container_content(struct supertype *st, int mdfd,
                sysfs_free(sra);
 
        for (dev = content->devs; dev; dev = dev->next)
-               if (sysfs_add_disk(content, dev, 1) == 0)
-                       working++;
-               else if (errno == EEXIST)
+               if (sysfs_add_disk(content, dev, 1) == 0) {
+                       if (dev->disk.raid_disk >= content->array.raid_disks &&
+                           content->reshape_active)
+                               expansion++;
+                       else
+                               working++;
+               } else if (errno == EEXIST)
                        preexist++;
-               else if (dev->disk.raid_disk >= content->array.raid_disks &&
-                         content->reshape_active)
-                       expansion++;
        if (working == 0)
                return 1;/* Nothing new, don't try to start */