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 @@ -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, diff --git a/super-intel.c b/super-intel.c index dc0c9c0..782519e 100644 --- a/super-intel.c +++ b/super-intel.c @@ -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,