X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=Detail.c;h=54db558b48dd8664f9f660d3a3a25642ecc32e8e;hb=ddc7201f965ce3192b8a96f65609fe8279148c2e;hp=5ff8cd138fd759d6ae2e1ecd1b180d7a7eab1404;hpb=5a52a340905d1a9d0a268ce2621f55db6b3fd423;p=thirdparty%2Fmdadm.git diff --git a/Detail.c b/Detail.c index 5ff8cd13..54db558b 100644 --- a/Detail.c +++ b/Detail.c @@ -196,14 +196,16 @@ int Detail(char *dev, int brief, int export, int test, char *homehost) if (brief) { mdu_bitmap_file_t bmf; - if (array.raid_disks) - printf("ARRAY %s level=%s num-devices=%d", dev, - c?c:"-unknown-", - array.raid_disks ); - else - printf("ARRAY %s level=container num-devices=%d", - dev, array.nr_disks); - + printf("ARRAY %s", dev); + if (brief > 1) { + if (array.raid_disks) + printf("level=%s num-devices=%d", + c?c:"-unknown-", + array.raid_disks ); + else + printf("level=container num-devices=%d", + array.nr_disks); + } if (container) { printf(" container=%s", container); printf(" member=%s", member); @@ -261,8 +263,8 @@ int Detail(char *dev, int brief, int export, int test, char *homehost) unsigned long long dsize = get_component_size(fd); if (dsize > 0) printf(" Used Dev Size : %llu%s\n", - dsize, - human_size((long long)dsize<<10)); + dsize/2, + human_size((long long)dsize<<9)); else printf(" Used Dev Size : unknown\n"); } else @@ -530,3 +532,44 @@ out: close(fd); return rv; } + +int Detail_Platform(struct superswitch *ss, int scan, int verbose) +{ + /* display platform capabilities for the given metadata format + * 'scan' in this context means iterate over all metadata types + */ + int i; + int err = 1; + + if (ss && ss->detail_platform) + err = ss->detail_platform(verbose, 0); + else if (ss) { + if (verbose) + fprintf(stderr, Name ": %s metadata is platform independent\n", + ss->name ? : "[no name]"); + } else if (!scan) { + if (verbose) + fprintf(stderr, Name ": specify a metadata type or --scan\n"); + } + + if (!scan) + return err; + + for (i = 0; superlist[i]; i++) { + struct superswitch *meta = superlist[i]; + + if (meta == ss) + continue; + if (verbose) + fprintf(stderr, Name ": checking metadata %s\n", + meta->name ? : "[no name]"); + if (!meta->detail_platform) { + if (verbose) + fprintf(stderr, Name ": %s metadata is platform independent\n", + meta->name ? : "[no name]"); + } else + err |= meta->detail_platform(verbose, 0); + } + + return err; +}