]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.h
Create a container member
[thirdparty/mdadm.git] / mdadm.h
diff --git a/mdadm.h b/mdadm.h
index 0424331bbb0f05ccd4b834a468d069c7436b1c8d..dae73cce38b1cfc2f2b75d53d3d8ab7468dfa41a 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,6 +384,9 @@ 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 */
@@ -386,6 +397,8 @@ struct supertype {
        struct superswitch *ss;
        int minor_version;
        int max_devs;
+       int container_dev;    /* devnum of container */
+       int container_member; /* numerical position in container */
        void *sb;
        void *info;
 };
@@ -485,6 +498,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);
 
@@ -530,6 +545,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);
@@ -548,6 +565,8 @@ extern int open_mddev_devnum(char *devname, int devnum, char *name,
                             char *chosen_name, int parts);
 extern int open_container(int fd);
 
+extern char *devnum2devname(int num);
+extern int fd2devnum(int fd);
 
 #define        LEVEL_MULTIPATH         (-4)
 #define        LEVEL_LINEAR            (-1)