]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Added test for array degradation for spare-same-slot
authorPrzemyslaw Czarnowski <przemyslaw.hawrylewicz.czarnowski@intel.com>
Sun, 26 Dec 2010 11:33:14 +0000 (22:33 +1100)
committerNeilBrown <neilb@suse.de>
Sun, 26 Dec 2010 11:33:14 +0000 (22:33 +1100)
spare-same-slot allows re-adding of missing array member with disk
re-inserted into the same slot where previous member was plugged in.
If in the meantime another spare has been used for recovery, same slot
cookie should be ignored.

Signed-off-by: Przemyslaw Czarnowski <przemyslaw.hawrylewicz.czarnowski@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Incremental.c

index 6ff64f3a2bfad90a25555b16726b600528f31b2c..ee476dab1dd023797c4770163d66e66736fe175e 100644 (file)
@@ -966,11 +966,13 @@ static int array_try_spare(char *devname, int *dfdp, struct dev_policy *pol,
                 * arrays/containers that match 'target'.
                 * If 'target' is set and 'bare' is true, we prefer the
                 * array which matches 'target'.
+                * target is considered only if we deal with degraded array
                 */
                if (target) {
                        if (strcmp(target->metadata, mp->metadata) == 0 &&
                            memcmp(target->uuid, mp->uuid,
-                                  sizeof(target->uuid)) == 0) {
+                                  sizeof(target->uuid)) == 0 &&
+                           sra->array.failed_disks > 0) {
                                /* This is our target!! */
                                if (chosen)
                                        sysfs_free(chosen);