]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Query.c
Add a 'super-switch' so that different format superblocks can be used.
[thirdparty/mdadm.git] / Query.c
diff --git a/Query.c b/Query.c
index 71aafd84b706ff48d301e43f6bd2549dba102b35..88df3214b835de0b90a6f1995d4da28367385524 100644 (file)
--- a/Query.c
+++ b/Query.c
@@ -44,6 +44,7 @@ int Query(char *dev)
        struct mdinfo info;
        mdu_array_info_t array;
        void *super;
+       struct superswitch *ss = NULL;
 
        unsigned long long larray_size;
        unsigned long array_size;
@@ -94,12 +95,16 @@ int Query(char *dev)
                       array.raid_disks,
                       array.spare_disks, array.spare_disks==1?"":"s");
        }
-       superror = load_super0(fd, &super, dev);
-       superrno = errno;
+       ss = guess_super(fd, dev);
+       if (ss) {
+               superror = ss->load_super(fd, &super, dev);
+               superrno = errno;
+       } else 
+               superror = -1;
        close(fd);
        if (superror == 0) {
                /* array might be active... */
-               getinfo_super0(&info, super);
+               ss->getinfo_super(&info, super);
                mddev = get_md_name(info.array.md_minor);
                disc.number = info.disk.number;
                activity = "undetected";