X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=Query.c;h=d6489e5a6a6da003fa8091c3c55aecf9b3ea25f2;hb=refs%2Fheads%2Fmdadm-3.2.x;hp=f9857d6d9e2ddadd86726db70046324bf4b0ee7d;hpb=1d54f2867b928bb1c3374f269599b8cbcb293193;p=thirdparty%2Fmdadm.git diff --git a/Query.c b/Query.c index f9857d6d..d6489e5a 100644 --- a/Query.c +++ b/Query.c @@ -35,7 +35,7 @@ int Query(char *dev) int fd = open(dev, O_RDONLY); int vers; int ioctlerr; - int superror, superrno; + int superror; struct mdinfo info; mdu_array_info_t array; struct supertype *st = NULL; @@ -82,17 +82,20 @@ int Query(char *dev) array.spare_disks, array.spare_disks==1?"":"s"); } st = guess_super(fd); - if (st) { + if (st && st->ss->compare_super != NULL) superror = st->ss->load_super(st, fd, dev); - superrno = errno; - } else + else superror = -1; close(fd); if (superror == 0) { /* array might be active... */ + int uuid[4]; + struct map_ent *me, *map = NULL; st->ss->getinfo_super(st, &info, NULL); - if (st->ss == &super0) { - mddev = get_md_name(info.array.md_minor); + st->ss->uuid_from_super(st, uuid); + me = map_by_uuid(&map, uuid); + if (me) { + mddev = me->path; disc.number = info.disk.number; activity = "undetected"; if (mddev && (fd = open(mddev, O_RDONLY))>=0) { @@ -107,7 +110,7 @@ int Query(char *dev) close(fd); } } else { - activity = "unknown"; + activity = "inactive"; mddev = "array"; } printf("%s: device %d in %d device %s %s %s. Use mdadm --examine for more detail.\n",