]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.h
Add guess_super_type
[thirdparty/mdadm.git] / mdadm.h
diff --git a/mdadm.h b/mdadm.h
index 796d76239a18afa53cb1473c069e893447ba9c1a..89705603893922c5a8013a23f48f16f67b94540a 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -671,9 +671,11 @@ extern struct superswitch {
        int swapuuid; /* true if uuid is bigending rather than hostendian */
        int external;
        const char *name; /* canonical metadata name */
-} super0, super1, super_ddf, *superlist[];
+} *superlist[];
 
-extern struct superswitch super_imsm;
+extern struct superswitch super0, super1;
+extern struct superswitch super_imsm, super_ddf;
+extern struct superswitch mbr, gpt;
 
 struct metadata_update {
        int     len;
@@ -727,7 +729,11 @@ struct supertype {
 };
 
 extern struct supertype *super_by_fd(int fd);
-extern struct supertype *guess_super(int fd);
+enum guess_types { guess_any, guess_array, guess_partitions };
+extern struct supertype *guess_super_type(int fd, enum guess_types guess_type);
+static inline struct supertype *guess_super(int fd) {
+       return guess_super_type(fd, guess_any);
+}
 extern struct supertype *dup_super(struct supertype *st);
 extern int get_dev_size(int fd, char *dname, unsigned long long *sizep);
 extern void get_one_disk(int mdfd, mdu_array_info_t *ainf,
@@ -786,12 +792,40 @@ extern char type_part[], type_disk[];
 extern void policyline(char *line, char *type);
 extern void policy_free(void);
 
+extern struct dev_policy *path_policy(char *path, char *type);
 extern struct dev_policy *disk_policy(struct mdinfo *disk);
 extern void dev_policy_free(struct dev_policy *p);
 
 extern void pol_new(struct dev_policy **pol, char *name, char *val, char *metadata);
 extern struct dev_policy *pol_find(struct dev_policy *pol, char *name);
 
+enum policy_action {
+       act_default,
+       act_include,
+       act_re_add,
+       act_spare,
+       act_force_spare,
+       act_err
+};
+
+extern int policy_action_allows(struct dev_policy *plist, const char *metadata,
+                               enum policy_action want);
+extern int disk_action_allows(struct mdinfo *disk, const char *metadata,
+                             enum policy_action want);
+
+struct domainlist {
+       struct domainlist *next;
+       char *dom;
+};
+
+extern int domain_test(struct domainlist *dom, struct dev_policy *pol,
+                      const char *metadata);
+extern struct domainlist *domain_from_array(struct mdinfo *mdi,
+                                           const char *metadata);
+extern void domain_free(struct domainlist *dl);
+extern void domain_merge(struct domainlist **domp, struct dev_policy *pol,
+                        const char *metadata);
+
 #if __GNUC__ < 3
 struct stat64;
 #endif