]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Query.c
imsm: support RAID 10 with more than 4 drives
[thirdparty/mdadm.git] / Query.c
diff --git a/Query.c b/Query.c
index 4dec9f5104f81882326b2d499eba4bba79cdbb4f..adcd231e051b19fa5fb5b418d5af6f2980a53dc5 100644 (file)
--- a/Query.c
+++ b/Query.c
@@ -68,6 +68,9 @@ int Query(char *dev)
 
                if (md_get_array_info(fd, &array) < 0) {
                        ioctlerr = errno;
+                       level = -1;
+                       raid_disks = -1;
+                       spare_disks = -1;
                } else {
                        level = array.level;
                        raid_disks = array.raid_disks;
@@ -82,16 +85,15 @@ int Query(char *dev)
 
        if (ioctlerr == ENODEV)
                printf("%s: is an md device which is not active\n", dev);
+       else if (ioctlerr && major(stb.st_rdev) != MD_MAJOR)
+               printf("%s: is not an md array\n", dev);
        else if (ioctlerr)
                printf("%s: is an md device, but gives \"%s\" when queried\n",
                       dev, strerror(ioctlerr));
-       else if (staterr)
-               printf("%s: is not a valid md device, returning %s\n",
-                      dev, strerror(ioctlerr));
        else {
                printf("%s: %s %s %d devices, %d spare%s. Use mdadm --detail for more detail.\n",
                       dev, human_size_brief(larray_size,IEC),
-                      map_num(pers, level), raid_disks,
+                      map_num_s(pers, level), raid_disks,
                       spare_disks, spare_disks == 1 ? "" : "s");
        }
        st = guess_super(fd);
@@ -129,7 +131,7 @@ int Query(char *dev)
                       dev,
                       info.disk.number, info.array.raid_disks,
                       activity,
-                      map_num(pers, info.array.level),
+                      map_num_s(pers, info.array.level),
                       mddev);
                if (st->ss == &super0)
                        put_md_name(mddev);