]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
imsm: fix failed disks are allowed back into the container
authorDan Williams <dan.j.williams@intel.com>
Fri, 23 Jan 2009 22:45:34 +0000 (15:45 -0700)
committerDan Williams <dan.j.williams@intel.com>
Fri, 23 Jan 2009 22:45:34 +0000 (15:45 -0700)
Failed disks do not have valid serial numbers which means we will not
pick up the 'failed' status bit from the metadata entry.  Check for
dl->index == -2 to prevent failed disks from being incorporated into the
container.

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
super-intel.c

index 0a7c34a258c9aa7231adeefebdd6c8a7a6caaa56..5c9f413600d89d368e9d5c427b9d0f426eca0f84 100644 (file)
@@ -1195,8 +1195,11 @@ static void getinfo_super_imsm(struct supertype *st, struct mdinfo *info)
                info->component_size = reserved;
                s = disk->status;
                info->disk.state  = s & CONFIGURED_DISK ? (1 << MD_DISK_ACTIVE) : 0;
-               info->disk.state |= s & FAILED_DISK ? (1 << MD_DISK_FAULTY) : 0;
                info->disk.state |= s & SPARE_DISK ? 0 : (1 << MD_DISK_SYNC);
+               if (s & FAILED_DISK || super->disks->index == -2) {
+                       info->disk.state |= 1 << MD_DISK_FAULTY;
+                       info->disk.raid_disk = -2;
+               }
        }
 
        /* only call uuid_from_super_imsm when this disk is part of a populated container,