X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=mdadm.h;h=2b34acffd5a0d1878d13492a4c654112b1d731cc;hb=4d1313e9017e2608bfd2d01f854c19e23f7daf62;hp=ed0c115335bcdcdf8765fad51336847b62a443d5;hpb=492350045c7e40741069caa7d017209439db665b;p=thirdparty%2Fmdadm.git diff --git a/mdadm.h b/mdadm.h index ed0c1153..2b34acff 100644 --- a/mdadm.h +++ b/mdadm.h @@ -259,8 +259,9 @@ typedef struct mddev_ident_s { char *bitmap_file; int bitmap_fd; - char *container; /* /dev/whatever name of container. You - * would expect this to be the 'devname' + char *container; /* /dev/whatever name of container, or + * uuid of container. You would expect + * this to be the 'devname' or UUID * of some other entry. */ char *member; /* subarray within a container */ @@ -274,9 +275,11 @@ typedef struct mddev_dev_s { char disposition; /* 'a' for add, 'r' for remove, 'f' for fail. * Not set for names read from .config */ - char writemostly; + char writemostly; /* 1 for 'set writemostly', 2 for 'clear writemostly' */ char re_add; char used; /* set when used */ + struct mdinfo *content; /* If devname is a container, this might list + * the remaining member arrays. */ struct mddev_dev_s *next; } *mddev_dev_t; @@ -312,17 +315,22 @@ struct map_ent { int devnum; char metadata[20]; int uuid[4]; + int bad; char *path; }; extern int map_update(struct map_ent **mpp, int devnum, char *metadata, int uuid[4], char *path); extern struct map_ent *map_by_uuid(struct map_ent **map, int uuid[4]); +extern struct map_ent *map_by_devnum(struct map_ent **map, int devnum); +extern struct map_ent *map_by_name(struct map_ent **map, char *name); extern void map_read(struct map_ent **melp); extern int map_write(struct map_ent *mel); extern void map_delete(struct map_ent **mapp, int devnum); extern void map_free(struct map_ent *map); extern void map_add(struct map_ent **melp, int devnum, char *metadata, int uuid[4], char *path); +extern int map_lock(struct map_ent **melp); +extern void map_unlock(struct map_ent **melp); /* various details can be requested */ #define GET_LEVEL 1 @@ -355,6 +363,7 @@ extern int sysfs_set_str(struct mdinfo *sra, struct mdinfo *dev, char *name, char *val); extern int sysfs_set_num(struct mdinfo *sra, struct mdinfo *dev, char *name, unsigned long long val); +extern int sysfs_uevent(struct mdinfo *sra, char *event); extern int sysfs_get_ll(struct mdinfo *sra, struct mdinfo *dev, char *name, unsigned long long *val); extern int sysfs_set_safemode(struct mdinfo *sra, unsigned long ms); @@ -637,6 +646,7 @@ 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, mdu_disk_info_t *disk); +void wait_for(char *dev); #if __GNUC__ < 3 struct stat64; @@ -692,25 +702,25 @@ extern int Grow_restart(struct supertype *st, struct mdinfo *info, int *fdlist, int cnt, char *backup_file); -extern int Assemble(struct supertype *st, char *mddev, int mdfd, +extern int Assemble(struct supertype *st, char *mddev, mddev_ident_t ident, mddev_dev_t devlist, char *backup_file, int readonly, int runstop, char *update, char *homehost, int verbose, int force); -extern int Build(char *mddev, int mdfd, int chunk, int level, int layout, - int raiddisks, - mddev_dev_t devlist, int assume_clean, - char *bitmap_file, int bitmap_chunk, int write_behind, int delay, int verbose); +extern int Build(char *mddev, int chunk, int level, int layout, + int raiddisks, mddev_dev_t devlist, int assume_clean, + char *bitmap_file, int bitmap_chunk, int write_behind, + int delay, int verbose, int autof); -extern int Create(struct supertype *st, char *mddev, int mdfd, +extern int Create(struct supertype *st, char *mddev, int chunk, int level, int layout, unsigned long long size, int raiddisks, int sparedisks, char *name, char *homehost, int *uuid, int subdevs, mddev_dev_t devlist, int runstop, int verbose, int force, int assume_clean, - char *bitmap_file, int bitmap_chunk, int write_behind, int delay); + char *bitmap_file, int bitmap_chunk, int write_behind, int delay, int autof); extern int Detail(char *dev, int brief, int export, int test, char *homehost); extern int Query(char *dev); @@ -728,7 +738,8 @@ extern int WaitClean(char *dev, int verbose); 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); + int verbose, int runstop, int autof, + int trustworthy); extern void RebuildMap(void); extern int IncrementalScan(int verbose); @@ -752,6 +763,7 @@ extern int get_mdp_major(void); extern int dev_open(char *dev, int flags); extern int open_dev_excl(int devnum); extern int is_standard(char *dev, int *nump); +extern int same_dev(char *one, char *two); extern int parse_auto(char *str, char *msg, int config); extern mddev_ident_t conf_get_ident(char *dev); @@ -783,6 +795,9 @@ extern unsigned long long calc_array_size(int level, int raid_disks, int layout, int chunksize, unsigned long long devsize); extern int flush_metadata_updates(struct supertype *st); extern void append_metadata_update(struct supertype *st, void *buf, int len); +extern int assemble_container_content(struct supertype *st, int mdfd, + struct mdinfo *content, int runstop, + char *chosen_name, int verbose); extern int add_disk(int mdfd, struct supertype *st, struct mdinfo *sra, struct mdinfo *info); @@ -800,14 +815,18 @@ extern char *get_md_name(int dev); 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 create_mddev(char *dev, char *name, int autof, int trustworthy, + char *chosen); +/* values for 'trustworthy' */ +#define LOCAL 1 +#define FOREIGN 2 +#define METADATA 3 +extern int open_mddev(char *dev, int report_errors); extern int open_container(int fd); extern int mdmon_running(int devnum); extern int signal_mdmon(int devnum); -extern int env_no_mdmon(void); +extern int check_env(char *name); extern int start_mdmon(int devnum); extern char *devnum2devname(int num);