X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=mdadm.h;h=54df02a1115c56fc79c212ab79cbb9398fb85826;hb=c61c4dd01df75d3a56809db19ec827203505830b;hp=62bfc44587bbadf1b816cf626b26a24f0c9bef02;hpb=b526e52dc7cbdde98db9c9f8765be28ba6d71d78;p=thirdparty%2Fmdadm.git diff --git a/mdadm.h b/mdadm.h index 62bfc445..54df02a1 100644 --- a/mdadm.h +++ b/mdadm.h @@ -68,28 +68,30 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence)); #define DEFAULT_BITMAP_DELAY 5 #define DEFAULT_MAX_WRITE_BEHIND 256 -/* VAR_RUN is where pid and socket files used for communicating - * with mdmon normally live. It should be /var/run, but if - * it is too hard to remount /var/run as read-only rather than - * unmounting it at shutdown time, then it should be - * redefined to some place that comfortably persists until - * final shutdown, possibly in /dev if that is a tmpfs. - * Note: VAR_RUN does not need to be writable at shutdown, - * only during boot when "mdmon --takeover" is run. - */ -#ifndef VAR_RUN -#define VAR_RUN "/var/run/mdadm" -#endif /* VAR_RUN */ -/* ALT_RUN should be somewhere that persists across the pivotroot +/* MAP_DIR should be somewhere that persists across the pivotroot * from early boot to late boot. - * If you don't have /lib/init/rw you might want to use /dev/.something + * Currently /dev seems to be the only option on most distros. + */ +#ifndef MAP_DIR +#define MAP_DIR "/dev/.mdadm" +#endif /* MAP_DIR */ +/* MAP_FILE is what we name the map file we put in MAP_DIR, in case you + * want something other than the default of "map" */ -#ifndef ALT_RUN -#define ALT_RUN "/lib/init/rw/mdadm" -#endif /* ALT_RUN */ -#ifndef ALT_MAPFILE -#define ALT_MAPFILE "map" -#endif /* ALT_MAPFILE */ +#ifndef MAP_FILE +#define MAP_FILE "map" +#endif /* MAP_FILE */ +/* MDMON_DIR is where pid and socket files used for communicating + * with mdmon normally live. It *should* be /var/run, but when + * mdmon is needed at early boot then it needs to write there prior + * to /var/run being mounted read/write, and it also then needs to + * persist beyond when /var/run is mounter read-only. So, to be + * safe, the default is somewhere that is read/write early in the + * boot process and stays up as long as possible during shutdown. + */ +#ifndef MDMON_DIR +#define MDMON_DIR "/dev/.mdadm/" +#endif /* MDMON_DIR */ #include "md_u.h" #include "md_p.h" @@ -260,6 +262,7 @@ extern char Version[], Usage[], Help[], OptionHelp[], /* for option that don't have short equivilents, we assign arbitrary * small numbers. '1' means an undecorated option, so we start at '2'. + * (note we must stop before we get to 65 i.e. 'A') */ enum special_options { AssumeClean = 2, @@ -268,13 +271,15 @@ enum special_options { ReAdd, NoDegraded, Sparc22, - BackupFile, + BackupFile, /* 8 */ HomeHost, AutoHomeHost, Symlinks, AutoDetect, Waitclean, DetailPlatform, + KillSubarray, + UpdateSubarray, /* 16 */ }; /* structures read from config file */ @@ -355,6 +360,10 @@ struct mdstat_ent { int raid_disks; int chunk_size; char * metadata_version; + struct dev_member { + char *name; + struct dev_member *next; + } *members; struct mdstat_ent *next; }; @@ -363,6 +372,7 @@ extern void free_mdstat(struct mdstat_ent *ms); extern void mdstat_wait(int seconds); extern void mdstat_wait_fd(int fd, const sigset_t *sigmask); extern int mddev_busy(int devnum); +extern struct mdstat_ent *mdstat_by_component(char *name); struct map_ent { struct map_ent *next; @@ -610,6 +620,12 @@ extern struct superswitch { struct mdinfo *(*container_content)(struct supertype *st); /* Allow a metadata handler to override mdadm's default layouts */ int (*default_layout)(int level); /* optional */ + /* query the supertype for default chunk size */ + int (*default_chunk)(struct supertype *st); /* optional */ + /* Permit subarray's to be deleted from inactive containers */ + int (*kill_subarray)(struct supertype *st); /* optional */ + /* Permit subarray's to be modified */ + int (*update_subarray)(struct supertype *st, char *update, mddev_ident_t ident); /* optional */ /* for mdmon */ int (*open_new)(struct supertype *c, struct active_array *a, @@ -763,7 +779,7 @@ extern int Manage_ro(char *devname, int fd, int readonly); extern int Manage_runstop(char *devname, int fd, int runstop, int quiet); extern int Manage_resize(char *devname, int fd, long long size, int raid_disks); extern int Manage_subdevs(char *devname, int fd, - mddev_dev_t devlist, int verbose); + mddev_dev_t devlist, int verbose, int test); extern int autodetect(void); extern int Grow_Add_device(char *devname, int fd, char *newdev); extern int Grow_addbitmap(char *devname, int fd, char *file, int chunk, int delay, int write_behind, int force); @@ -806,6 +822,8 @@ extern int Monitor(mddev_dev_t devlist, int dosyslog, int test, char *pidfile, int increments); extern int Kill(char *dev, struct supertype *st, int force, int quiet, int noexcl); +extern int Kill_subarray(char *dev, char *subarray, int quiet); +extern int Update_subarray(char *dev, char *subarray, char *update, mddev_ident_t ident, int quiet); extern int Wait(char *dev); extern int WaitClean(char *dev, int sock, int verbose); @@ -817,7 +835,7 @@ extern int Incremental_container(struct supertype *st, char *devname, int trustworthy); extern void RebuildMap(void); extern int IncrementalScan(int verbose); - +extern int IncrementalRemove(char *devname, int verbose); extern int CreateBitmap(char *filename, int force, char uuid[16], unsigned long chunksize, unsigned long daemon_sleep, unsigned long write_behind, @@ -912,8 +930,12 @@ extern int create_mddev(char *dev, char *name, int autof, int trustworthy, #define METADATA 3 extern int open_mddev(char *dev, int report_errors); extern int open_container(int fd); +extern int is_container_member(struct mdstat_ent *ent, char *devname); +extern int is_subarray_active(char *subarray, char *devname); +int is_container_active(char *devname); +extern int open_subarray(char *dev, struct supertype *st, int quiet); +extern struct superswitch *version_to_superswitch(char *vers); -extern char *pid_dir; extern int mdmon_running(int devnum); extern int mdmon_pid(int devnum); extern int check_env(char *name);