]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Detail: list containers before members.
authorNeilBrown <neilb@suse.de>
Mon, 19 Oct 2009 06:00:52 +0000 (17:00 +1100)
committerNeilBrown <neilb@suse.de>
Mon, 19 Oct 2009 06:00:52 +0000 (17:00 +1100)
To allow "--assemble --scan" to have a chance, list
containers before members in --detail --scan output.

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

diff --git a/mdadm.c b/mdadm.c
index df48117d13900b19bbe6c08dba67543420dc746b..4651e737195dd803ea01d4b314eb314d90e2e93a 100644 (file)
--- a/mdadm.c
+++ b/mdadm.c
@@ -1263,11 +1263,18 @@ int main(int argc, char *argv[])
                                        struct mdstat_ent *ms = mdstat_read(0, 1);
                                        struct mdstat_ent *e;
                                        struct map_ent *map = NULL;
+                                       int members;
                                        int v = verbose>1?0:verbose+1;
 
+                                       for (members = 0; members <= 1; members++) {
                                        for (e=ms ; e ; e=e->next) {
                                                char *name;
                                                struct map_ent *me;
+                                               int member = e->metadata_version &&
+                                                       strncmp(e->metadata_version,
+                                                               "external:/", 10) == 0;
+                                               if (members != member)
+                                                       continue;
                                                me = map_by_devnum(&map, e->devnum);
                                                if (me && me->path
                                                    && strcmp(me->path, "/unknown") != 0)
@@ -1288,6 +1295,7 @@ int main(int argc, char *argv[])
                                                        rv |= WaitClean(name, -1, v);
                                                put_md_name(name);
                                        }
+                                       }
                                        free_mdstat(ms);
                                } else  if (devmode == 'S' && scan) {
                                        /* apply --stop to all devices in /proc/mdstat */