summaryrefslogtreecommitdiffstats
path: root/super0.c
diff options
context:
space:
mode:
authorNeil Brown <neilb@suse.de>2006-05-26 02:29:12 +0000
committerNeil Brown <neilb@suse.de>2006-05-26 02:29:12 +0000
commit2998bc013c2f4a6cc576efab9c0492eb889c8853 (patch)
treef00a3926f097612099930cb96ef7f0a2048a259d /super0.c
parente7bb5d23a9b29ae6f316fe3ce8970301e1bc0d4d (diff)
downloadmdadm-2998bc013c2f4a6cc576efab9c0492eb889c8853.tar.gz
mdadm-2998bc013c2f4a6cc576efab9c0492eb889c8853.tar.xz
mdadm-2998bc013c2f4a6cc576efab9c0492eb889c8853.zip
Improve names reported by --examine --brief
Instead of depending (too much) on what is in /dev, we make names based on the content of the superblock. Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'super0.c')
-rw-r--r--super0.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/super0.c b/super0.c
index 87ef1e0..7bb64eb 100644
--- a/super0.c
+++ b/super0.c
@@ -227,10 +227,17 @@ static void brief_examine_super0(void *sbv)
{
mdp_super_t *sb = sbv;
char *c=map_num(pers, sb->level);
- char *nm;
+ char devname[20];
+ struct stat stb;
+
+ sprintf(devname, "/dev/md%d", sb->md_minor);
+ if (stat(devname, &stb) != 0) {
+ /* /dev/mdX doesn't exist, so use /dev/md/X */
+ sprintf(devname, "/dev/md/%d", sb->md_minor);
+ }
printf("ARRAY %s level=%s num-devices=%d UUID=",
- nm = get_md_name(sb->md_minor),
+ devname,
c?c:"-unknown-", sb->raid_disks);
if (sb->minor_version >= 90)
printf("%08x:%08x:%08x:%08x", sb->set_uuid0, sb->set_uuid1,
@@ -238,7 +245,6 @@ static void brief_examine_super0(void *sbv)
else
printf("%08x", sb->set_uuid0);
printf("\n");
- put_md_name(nm);
}
static void detail_super0(void *sbv, char *homehost)