]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
imsm: add spares to --examine output.
authorNeilBrown <neilb@suse.de>
Thu, 16 Dec 2010 00:33:23 +0000 (11:33 +1100)
committerNeilBrown <neilb@suse.de>
Thu, 16 Dec 2010 00:33:23 +0000 (11:33 +1100)
When we examine a container, list the spare devices as well as
the active devices.

Signed-off-by: NeilBrown <neilb@suse.de>
super-intel.c

index 2be24a9edbde186ced4085888948ac2b79323206..74cfa6cfc4a627f6283bc678e103ffb975bec02a 100644 (file)
@@ -804,7 +804,7 @@ static void examine_super_imsm(struct supertype *st, char *homehost)
        char nbuf[64];
        __u32 sum;
        __u32 reserved = imsm_reserved_sectors(super, super->disks);
-
+       struct dl *dl;
 
        snprintf(str, MPB_SIG_LEN, "%s", mpb->sig);
        printf("          Magic : %s\n", str);
@@ -849,6 +849,26 @@ static void examine_super_imsm(struct supertype *st, char *homehost)
                        continue;
                print_imsm_disk(mpb, i, reserved);
        }
+       for (dl = super->disks ; dl; dl = dl->next) {
+               struct imsm_disk *disk;
+               char str[MAX_RAID_SERIAL_LEN + 1];
+               __u64 sz;
+
+               if (dl->index >= 0)
+                       continue;
+
+               disk = &dl->disk;
+               printf("\n");
+               snprintf(str, MAX_RAID_SERIAL_LEN + 1, "%s", disk->serial);
+               printf("    Disk Serial : %s\n", str);
+               printf("          State :%s%s%s\n", is_spare(disk) ? " spare" : "",
+                      is_configured(disk) ? " active" : "",
+                      is_failed(disk) ? " failed" : "");
+               printf("             Id : %08x\n", __le32_to_cpu(disk->scsi_id));
+               sz = __le32_to_cpu(disk->total_blocks) - reserved;
+               printf("    Usable Size : %llu%s\n", (unsigned long long)sz,
+                      human_size(sz * 512));
+       }
 }
 
 static void brief_examine_super_imsm(struct supertype *st, int verbose)