]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Exmaine/brief: put member arrays after container arrays.
authorNeilBrown <neilb@suse.de>
Fri, 7 Aug 2009 04:17:40 +0000 (14:17 +1000)
committerNeilBrown <neilb@suse.de>
Fri, 7 Aug 2009 04:17:40 +0000 (14:17 +1000)
A previous patch moved move the '--examine --brief' reporting of
member arrays to before their containers.  This breaks "mdadm -As"
assembly.  So put them back, but still fix the problem addressed by
previous patch.

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

index 02d5ac44d19f6db6938fcf737ca0f9b09950941a..c79a70118564ef0d91579c9dc98f5be4971449a5 100644 (file)
--- a/Examine.c
+++ b/Examine.c
@@ -145,6 +145,8 @@ int Examine(mddev_dev_t devlist, int brief, int export, int scan,
                                        sep=',';
                                }
                        }
+                       if (ap->st->ss->brief_examine_subarrays)
+                               ap->st->ss->brief_examine_subarrays(ap->st, brief > 1);
                        ap->st->ss->free_super(ap->st);
                        /* FIXME free ap */
                        if (ap->spares || brief > 1)
diff --git a/mdadm.h b/mdadm.h
index 4111eafa34d1a5a77b759cbf4422f5ab5b6a9838..91ba624bb879880a5ce7f424c3f89297838a0a25 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -436,6 +436,7 @@ extern struct superswitch {
         */
        void (*examine_super)(struct supertype *st, char *homehost);
        void (*brief_examine_super)(struct supertype *st, int verbose);
+       void (*brief_examine_subarrays)(struct supertype *st, int verbose);
        void (*export_examine_super)(struct supertype *st);
 
        /* Used to report details of an active array.
index c28d8040895950c01c7adf9a5dedb96d05a8813e..9bf08c2c9428512d9a1ff0da17e5712372e1d792 100644 (file)
@@ -1180,6 +1180,18 @@ static void getinfo_super_ddf(struct supertype *st, struct mdinfo *info);
 static void uuid_from_super_ddf(struct supertype *st, int uuid[4]);
 
 static void brief_examine_super_ddf(struct supertype *st, int verbose)
+{
+       /* We just write a generic DDF ARRAY entry
+        */
+       struct mdinfo info;
+       char nbuf[64];
+       getinfo_super_ddf(st, &info);
+       fname_from_uuid(st, &info, nbuf, ':');
+
+       printf("ARRAY metadata=ddf UUID=%s\n", nbuf + 5);
+}
+
+static void brief_examine_subarrays_ddf(struct supertype *st, int verbose)
 {
        /* We just write a generic DDF ARRAY entry
         */
@@ -1203,7 +1215,6 @@ static void brief_examine_super_ddf(struct supertype *st, int verbose)
                printf("ARRAY container=%s member=%d UUID=%s\n",
                       nbuf+5, i, nbuf1+5);
        }
-       printf("ARRAY metadata=ddf UUID=%s\n", nbuf + 5);
 }
 
 static void export_examine_super_ddf(struct supertype *st)
@@ -3597,6 +3608,7 @@ struct superswitch super_ddf = {
 #ifndef        MDASSEMBLE
        .examine_super  = examine_super_ddf,
        .brief_examine_super = brief_examine_super_ddf,
+       .brief_examine_subarrays = brief_examine_subarrays_ddf,
        .export_examine_super = export_examine_super_ddf,
        .detail_super   = detail_super_ddf,
        .brief_detail_super = brief_detail_super_ddf,
index dc0c9c06eca706d472bc0d42b4dde538af5e1ff2..782519e937aeab3655b58b41f7aa2e36ca4bc968 100644 (file)
@@ -761,15 +761,30 @@ static void brief_examine_super_imsm(struct supertype *st, int verbose)
        /* We just write a generic IMSM ARRAY entry */
        struct mdinfo info;
        char nbuf[64];
-       char nbuf1[64];
        struct intel_super *super = st->sb;
-       int i;
 
        if (!super->anchor->num_raid_devs) {
                printf("ARRAY metadata=imsm\n");
                return;
        }
 
+       getinfo_super_imsm(st, &info);
+       fname_from_uuid(st, &info, nbuf, ':');
+       printf("ARRAY metadata=imsm UUID=%s\n", nbuf + 5);
+}
+
+static void brief_examine_subarrays_imsm(struct supertype *st, int verbose)
+{
+       /* We just write a generic IMSM ARRAY entry */
+       struct mdinfo info;
+       char nbuf[64];
+       char nbuf1[64];
+       struct intel_super *super = st->sb;
+       int i;
+
+       if (!super->anchor->num_raid_devs)
+               return;
+
        getinfo_super_imsm(st, &info);
        fname_from_uuid(st, &info, nbuf, ':');
        for (i = 0; i < super->anchor->num_raid_devs; i++) {
@@ -781,7 +796,6 @@ static void brief_examine_super_imsm(struct supertype *st, int verbose)
                printf("ARRAY /dev/md/%.16s container=%s member=%d UUID=%s\n",
                       dev->volume, nbuf + 5, i, nbuf1 + 5);
        }
-       printf("ARRAY metadata=imsm UUID=%s\n", nbuf + 5);
 }
 
 static void export_examine_super_imsm(struct supertype *st)
@@ -4554,6 +4568,7 @@ struct superswitch super_imsm = {
 #ifndef        MDASSEMBLE
        .examine_super  = examine_super_imsm,
        .brief_examine_super = brief_examine_super_imsm,
+       .brief_examine_subarrays = brief_examine_subarrays_imsm,
        .export_examine_super = export_examine_super_imsm,
        .detail_super   = detail_super_imsm,
        .brief_detail_super = brief_detail_super_imsm,