]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.h
Can now mostly assemble DDF arrays
[thirdparty/mdadm.git] / mdadm.h
diff --git a/mdadm.h b/mdadm.h
index 71903768f21eedb4cf32e80e6bad464ddda69205..4c0e9e16a636a72ebfc7d141b47895ba071cea6c 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -142,7 +142,9 @@ struct mdinfo {
        int                     uuid[4];
        char                    name[33];
        unsigned long long      data_offset;
-       unsigned long long      component_size;
+       unsigned long long      component_size; /* same as array.size, except in
+                                                * sectors and up to 64bits.
+                                                */
        int                     reshape_active;
        unsigned long long      reshape_progress;
        int                     new_level, delta_disks, new_layout, new_chunk;
@@ -317,6 +319,11 @@ extern int sysfs_set_num(struct mdinfo *sra, struct mdinfo *dev,
                         char *name, unsigned long long val);
 extern int sysfs_get_ll(struct mdinfo *sra, struct mdinfo *dev,
                        char *name, unsigned long long *val);
+extern int sysfs_set_array(struct mdinfo *sra,
+                          struct mdinfo *info);
+extern int sysfs_add_disk(struct mdinfo *sra, int fd, struct mdinfo *sd);
+
+
 
 
 extern int save_stripes(int *source, unsigned long long *offsets,
@@ -350,6 +357,7 @@ extern struct superswitch {
        void (*export_detail_super)(struct supertype *st);
        void (*uuid_from_super)(struct supertype *st, int uuid[4]);
        void (*getinfo_super)(struct supertype *st, struct mdinfo *info);
+       void (*getinfo_super_n)(struct supertype *st, struct mdinfo *info);
        int (*match_home)(struct supertype *st, char *homehost);
        int (*update_super)(struct supertype *st, struct mdinfo *info,
                            char *update,
@@ -376,9 +384,14 @@ extern struct superswitch {
                                 int raiddisks,
                                 int chunk, unsigned long long size,
                                 char *subdev, unsigned long long *freesize);
+
+       struct mdinfo *(*container_content)(struct supertype *st);
+
        int major;
+       char *text_version;
        int swapuuid; /* true if uuid is bigending rather than hostendian */
-} super0, super1, *superlist[];
+       int external;
+} super0, super1, super_ddf, super_ddf_bvd, super_ddf_svd, *superlist[];
 
 struct supertype {
        struct superswitch *ss;
@@ -483,6 +496,8 @@ extern int Wait(char *dev);
 
 extern int Incremental(char *devname, int verbose, int runstop,
                       struct supertype *st, char *homehost, int autof);
+extern int Incremental_container(struct supertype *st, char *devname,
+                                int verbose, int runstop, int autof);
 extern void RebuildMap(void);
 extern int IncrementalScan(int verbose);
 
@@ -528,6 +543,8 @@ extern int enough(int level, int raid_disks, int layout, int clean,
 extern int ask(char *mesg);
 extern unsigned long long get_component_size(int fd);
 extern void remove_partitions(int fd);
+extern unsigned long long calc_array_size(int level, int raid_disks, int layout,
+                                  int chunksize, unsigned long long devsize);
 
 
 extern char *human_size(long long bytes);
@@ -544,6 +561,7 @@ extern char DefaultConfFile[];
 extern int open_mddev(char *dev, int autof);
 extern int open_mddev_devnum(char *devname, int devnum, char *name,
                             char *chosen_name, int parts);
+extern int open_container(int fd);
 
 
 #define        LEVEL_MULTIPATH         (-4)
@@ -552,6 +570,7 @@ extern int open_mddev_devnum(char *devname, int devnum, char *name,
 
 /* kernel module doesn't know about these */
 #define LEVEL_CONTAINER                (-100)
+#define        LEVEL_UNSUPPORTED       (-200)
 
 
 /* faulty stuff */