From: NeilBrown Date: Mon, 9 Mar 2009 03:10:52 +0000 (+1100) Subject: Examine: add examine_export for ddf and avoid crashes. X-Git-Tag: mdadm-3.0-devel3~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bceedeec55eeb5fc37065fed39159a04cffc1307;p=thirdparty%2Fmdadm.git Examine: add examine_export for ddf and avoid crashes. If the personality doesn't provide export_examine_super, don't crash. Signed-off-by: NeilBrown --- diff --git a/Examine.c b/Examine.c index d213664f..3827e7ed 100644 --- a/Examine.c +++ b/Examine.c @@ -128,7 +128,8 @@ int Examine(mddev_dev_t devlist, int brief, int export, int scan, d = dl_strdup(devlist->devname); dl_add(ap->devs, d); } else if (export) { - st->ss->export_examine_super(st); + if (st->ss->export_examine_super) + st->ss->export_examine_super(st); } else { printf("%s:\n",devlist->devname); st->ss->examine_super(st, homehost); diff --git a/super-ddf.c b/super-ddf.c index 7ca79fb7..8725eabd 100644 --- a/super-ddf.c +++ b/super-ddf.c @@ -1189,6 +1189,18 @@ static void brief_examine_super_ddf(struct supertype *st) } } +static void export_examine_super_ddf(struct supertype *st) +{ + struct mdinfo info; + char nbuf[64]; + getinfo_super_ddf(st, &info); + fname_from_uuid(st, &info, nbuf, ':'); + printf("MD_METADATA=ddf\n"); + printf("MD_LEVEL=container\n"); + printf("MD_UUID=%s\n", nbuf+5); +} + + static void detail_super_ddf(struct supertype *st, char *homehost) { /* FIXME later @@ -3563,6 +3575,7 @@ struct superswitch super_ddf = { #ifndef MDASSEMBLE .examine_super = examine_super_ddf, .brief_examine_super = brief_examine_super_ddf, + .export_examine_super = export_examine_super_ddf, .detail_super = detail_super_ddf, .brief_detail_super = brief_detail_super_ddf, .validate_geometry = validate_geometry_ddf,