]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Make --examine --brief report spares= properly
authorNeil Brown <neilb@suse.de>
Tue, 14 Jun 2005 00:14:32 +0000 (00:14 +0000)
committerNeil Brown <neilb@suse.de>
Tue, 14 Jun 2005 00:14:32 +0000 (00:14 +0000)
Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au>
ChangeLog
Examine.c

index 55ab3553559550b330c76dc3dcfa31c3025f0577..fbde4eccb06f1e872810a0399c8a2c929931988e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -21,6 +21,7 @@ Changes Prior to 1.12.0 release
        This is because the device list can change and so is not a
        stable aspect of the array
     -   Allow --force with --grow so '-Gfn1' works (on raid1)
+    -   Make --examine --brief report spares= properly.
        
 Changes Prior to 1.11.0 release
     -   Fix embarassing bug which causes --add to always fail.
index 186b6b14a72fb483c1220815d8a56d07bf517597..898d2a5f39c97d92cdee9c76ba522cd5f0a1834b 100644 (file)
--- a/Examine.c
+++ b/Examine.c
@@ -60,12 +60,12 @@ int Examine(mddev_dev_t devlist, int brief, int scan, int SparcAdjust)
        char *c;
        int rv = 0;
        int err;
-       int spares = 0;
 
        struct array {
                mdp_super_t super;
                void *devs;
                struct array *next;
+               int spares;
        } *arrays = NULL;
 
        for (; devlist ; devlist=devlist->next) {
@@ -126,10 +126,13 @@ int Examine(mddev_dev_t devlist, int brief, int scan, int SparcAdjust)
                                ap->super = super;
                                ap->devs = dl_head();
                                ap->next = arrays;
+                               ap->spares = 0;
                                arrays = ap;
                        }
                        d = dl_strdup(devlist->devname);
                        dl_add(ap->devs, d);
+                       if (super.this_disk.state == 0)
+                               ap->spares++;
                } else {
                        printf("%s:\n",devlist->devname);
                        printf("          Magic : %08x\n", super.md_magic);
@@ -215,7 +218,7 @@ int Examine(mddev_dev_t devlist, int brief, int scan, int SparcAdjust)
                                if (dp->state & (1<<MD_DISK_ACTIVE)) printf(" active");
                                if (dp->state & (1<<MD_DISK_SYNC)) printf(" sync");
                                if (dp->state & (1<<MD_DISK_REMOVED)) printf(" removed");
-                               if (dp->state == 0) { printf(" spare"); spares++; }
+                               if (dp->state == 0) printf(" spare");
                                if ((dv=map_dev(dp->major, dp->minor)))
                                        printf("   %s", dv);
                                printf("\n");
@@ -246,15 +249,15 @@ int Examine(mddev_dev_t devlist, int brief, int scan, int SparcAdjust)
                        char sep='=';
                        char *c=map_num(pers, ap->super.level);
                        char *d;
-                       printf("ARRAY %s level=%s num-devices=%d UUID=",
+                       printf("ARRAY %s level=%s num-devices=%d",
                               get_md_name(ap->super.md_minor),
                               c?c:"-unknown-", ap->super.raid_disks);
-                       if (spares) printf(" spares=%d", spares);
+                       if (ap->spares) printf(" spares=%d", ap->spares);
                        if (ap->super.minor_version >= 90)
-                               printf("%08x:%08x:%08x:%08x", ap->super.set_uuid0, ap->super.set_uuid1,
+                               printf(" UUID=%08x:%08x:%08x:%08x", ap->super.set_uuid0, ap->super.set_uuid1,
                                       ap->super.set_uuid2, ap->super.set_uuid3);
                        else
-                               printf("%08x", ap->super.set_uuid0);
+                               printf(" UUID=%08x", ap->super.set_uuid0);
                        if (brief > 1) {
                                printf("\n   devices");
                                for (d=dl_next(ap->devs); d!= ap->devs; d=dl_next(d)) {