]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - util.c
Add guess_super_type
[thirdparty/mdadm.git] / util.c
diff --git a/util.c b/util.c
index c2169d68dfa77d4590c918267f12e194a19fb470..0cb251c31d923d85a6a8fb198b854d9cdc2b6f49 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1087,7 +1087,7 @@ struct supertype *dup_super(struct supertype *orig)
        return st;
 }
 
-struct supertype *guess_super(int fd)
+struct supertype *guess_super_type(int fd, enum guess_types guess_type)
 {
        /* try each load_super to find the best match,
         * and return the best superswitch
@@ -1102,6 +1102,10 @@ struct supertype *guess_super(int fd)
        for (i=0 ; superlist[i]; i++) {
                int rv;
                ss = superlist[i];
+               if (guess_type == guess_array && ss->add_to_super == NULL)
+                       continue;
+               if (guess_type == guess_partitions && ss->add_to_super != NULL)
+                       continue;
                memset(st, 0, sizeof(*st));
                rv = ss->load_super(st, fd, NULL);
                if (rv == 0) {