]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Query.c
mdadm: improve the dlm locking mechanism for clustered raid
[thirdparty/mdadm.git] / Query.c
diff --git a/Query.c b/Query.c
index b761c470b268702d6191f93a2507588c8b68f126..2bd0e2a005843fb9bd603276e12ca5d865d9402b 100644 (file)
--- a/Query.c
+++ b/Query.c
@@ -38,7 +38,6 @@ int Query(char *dev)
        int level, raid_disks, spare_disks;
        struct mdinfo info;
        struct mdinfo *sra;
-       mdu_array_info_t array;
        struct supertype *st = NULL;
        unsigned long long larray_size;
        struct stat stb;
@@ -65,8 +64,13 @@ int Query(char *dev)
                raid_disks = sra->array.raid_disks;
                spare_disks = sra->array.spare_disks;
        } else {
+               mdu_array_info_t array;
+
                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;
@@ -111,7 +115,7 @@ int Query(char *dev)
                        disc.number = info.disk.number;
                        activity = "undetected";
                        if (mddev && (fd = open(mddev, O_RDONLY))>=0) {
-                               if (md_get_array_info(fd, &array) >= 0) {
+                               if (md_array_active(fd)) {
                                        if (md_get_disk_info(fd, &disc) >= 0 &&
                                            makedev((unsigned)disc.major,(unsigned)disc.minor) == stb.st_rdev)
                                                activity = "active";