X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=blobdiff_plain;f=mdadm.h;h=73881e2deed7801024d20e49b1f8660965f717e3;hp=0d73c172330ffd2e35dd437db2309f457022645e;hb=5f8097beb973842287e5ac6e2d2644accb04cf25;hpb=9a02c62af93879d7fe4f3740bcde2e01fbccc960 diff --git a/mdadm.h b/mdadm.h index 0d73c172..73881e2d 100644 --- 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 */