]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.h
more ddf stuff
[thirdparty/mdadm.git] / mdadm.h
diff --git a/mdadm.h b/mdadm.h
index 0d73c172330ffd2e35dd437db2309f457022645e..73881e2deed7801024d20e49b1f8660965f717e3 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -106,6 +106,13 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
 #define        __le16_to_cpu(_x) (_x)
 #define __le32_to_cpu(_x) (_x)
 #define __le64_to_cpu(_x) (_x)
+
+#define        __cpu_to_be16(_x) bswap_16(_x)
+#define __cpu_to_be32(_x) bswap_32(_x)
+#define __cpu_to_be64(_x) bswap_64(_x)
+#define        __be16_to_cpu(_x) bswap_16(_x)
+#define __be32_to_cpu(_x) bswap_32(_x)
+#define __be64_to_cpu(_x) bswap_64(_x)
 #elif BYTE_ORDER == BIG_ENDIAN
 #define        __cpu_to_le16(_x) bswap_16(_x)
 #define __cpu_to_le32(_x) bswap_32(_x)
@@ -113,6 +120,13 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
 #define        __le16_to_cpu(_x) bswap_16(_x)
 #define __le32_to_cpu(_x) bswap_32(_x)
 #define __le64_to_cpu(_x) bswap_64(_x)
+
+#define        __cpu_to_be16(_x) (_x)
+#define __cpu_to_be32(_x) (_x)
+#define __cpu_to_be64(_x) (_x)
+#define        __be16_to_cpu(_x) (_x)
+#define __be32_to_cpu(_x) (_x)
+#define __be64_to_cpu(_x) (_x)
 #else
 #  error "unknown endianness."
 #endif
@@ -330,9 +344,10 @@ extern char *map_dev(int major, int minor, int create);
 extern struct superswitch {
        void (*examine_super)(struct supertype *st, char *homehost);
        void (*brief_examine_super)(struct supertype *st);
+       void (*export_examine_super)(struct supertype *st);
        void (*detail_super)(struct supertype *st, char *homehost);
-       void (*export_super)(struct supertype *st);
        void (*brief_detail_super)(struct supertype *st);
+       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);
        int (*match_home)(struct supertype *st, char *homehost);
@@ -343,10 +358,10 @@ extern struct superswitch {
        int (*init_super)(struct supertype *st, mdu_array_info_t *info,
                          unsigned long long size, char *name,
                          char *homehost, int *uuid);
-       void (*add_to_super)(struct supertype *st, mdu_disk_info_t *dinfo);
+       void (*add_to_super)(struct supertype *st, mdu_disk_info_t *dinfo,
+                            int fd, char *devname);
        int (*store_super)(struct supertype *st, int fd);
-       int (*write_init_super)(struct supertype *st, mdu_disk_info_t *dinfo,
-                               char *devname);
+       int (*write_init_super)(struct supertype *st);
        int (*compare_super)(struct supertype *st, struct supertype *tst);
        int (*load_super)(struct supertype *st, int fd, char *devname);
        struct supertype * (*match_metadata_desc)(char *arg);
@@ -357,15 +372,22 @@ extern struct superswitch {
        void (*locate_bitmap)(struct supertype *st, int fd);
        int (*write_bitmap)(struct supertype *st, int fd);
        void (*free_super)(struct supertype *st);
+       int (*validate_geometry)(struct supertype *st, int level, int layout,
+                                int raiddisks,
+                                int chunk, unsigned long long size,
+                                char *subdev, unsigned long long *freesize);
        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;
        int minor_version;
        int max_devs;
        void *sb;
+       void *info;
 };
 
 extern struct supertype *super_by_fd(int fd);
@@ -451,14 +473,14 @@ extern int Create(struct supertype *st, char *mddev, int mdfd,
 
 extern int Detail(char *dev, int brief, int export, int test, char *homehost);
 extern int Query(char *dev);
-extern int Examine(mddev_dev_t devlist, int brief, int scan, int SparcAdjust,
-                  struct supertype *forcest, char *homehost);
+extern int Examine(mddev_dev_t devlist, int brief, int export, int scan,
+                  int SparcAdjust, struct supertype *forcest, char *homehost);
 extern int Monitor(mddev_dev_t devlist,
                   char *mailaddr, char *alert_cmd,
                   int period, int daemonise, int scan, int oneshot,
                   int dosyslog, int test, char *pidfile);
 
-extern int Kill(char *dev, int force, int quiet);
+extern int Kill(char *dev, int force, int quiet, int noexcl);
 extern int Wait(char *dev);
 
 extern int Incremental(char *devname, int verbose, int runstop,
@@ -508,6 +530,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);
@@ -524,12 +548,17 @@ 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)
 #define        LEVEL_LINEAR            (-1)
 #define        LEVEL_FAULTY            (-5)
 
+/* kernel module doesn't know about these */
+#define LEVEL_CONTAINER                (-100)
+#define        LEVEL_UNSUPPORTED       (-200)
+
 
 /* faulty stuff */