NeilBrown: Exmaine/brief: put member arrays after container arrays.

Martin F. Krafft madduck at alioth.debian.org
Tue Oct 27 19:45:20 UTC 2009


Module: mdadm
Branch: build
Commit: 4737ae25dec3b6b703f8f60f351e2d6d7b527ac1
URL:    http://git.debian.org/?p=pkg-mdadm/mdadm.git;a=commit;h=4737ae25dec3b6b703f8f60f351e2d6d7b527ac1

Author: NeilBrown <neilb at suse.de>
Date:   Fri Aug  7 14:17:40 2009 +1000

Exmaine/brief: put member arrays after container arrays.

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 at suse.de>

---

 Examine.c     |    2 ++
 mdadm.h       |    1 +
 super-ddf.c   |   14 +++++++++++++-
 super-intel.c |   21 ++++++++++++++++++---
 4 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/Examine.c b/Examine.c
index 02d5ac4..c79a701 100644
--- 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 4111eaf..91ba624 100644
--- 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.
diff --git a/super-ddf.c b/super-ddf.c
index c28d804..9bf08c2 100644
--- a/super-ddf.c
+++ b/super-ddf.c
@@ -1183,6 +1183,18 @@ 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
+	 */
 	struct ddf_super *ddf = st->sb;
 	struct mdinfo info;
 	int i;
@@ -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,
diff --git a/super-intel.c b/super-intel.c
index dc0c9c0..782519e 100644
--- a/super-intel.c
+++ b/super-intel.c
@@ -761,9 +761,7 @@ 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");
@@ -772,6 +770,23 @@ static void brief_examine_super_imsm(struct supertype *st, int verbose)
 
 	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++) {
 		struct imsm_dev *dev = get_imsm_dev(super, 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,




More information about the pkg-mdadm-commits mailing list