]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.h
Teach sysfs_add_disk() callers to use ->recovery_start versus 'insync' parameter
[thirdparty/mdadm.git] / mdadm.h
diff --git a/mdadm.h b/mdadm.h
index ffa5f5390678548b5f76f0c17973417ff66328e7..af6d91b273aaa3d93491a5c27e36adcfbbdd264a 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -146,7 +146,11 @@ struct mdinfo {
                                                    */
        int                     reshape_active;
        unsigned long long      reshape_progress;
-       unsigned long long      resync_start;
+       union {
+               unsigned long long resync_start; /* per-array resync position */
+               unsigned long long recovery_start; /* per-device rebuild position */
+               #define MaxSector  (~0ULL) /* resync/recovery complete position */
+       };
        unsigned long           safe_mode_delay; /* ms delay to mark clean */
        int                     new_level, delta_disks, new_layout, new_chunk;
        int                     errors;
@@ -168,6 +172,7 @@ struct mdinfo {
        struct mdinfo *next;
 
        /* Device info for mdmon: */
+       int recovery_fd;
        int state_fd;
        #define DS_FAULTY       1
        #define DS_INSYNC       2
@@ -370,14 +375,17 @@ extern int sysfs_set_str(struct mdinfo *sra, struct mdinfo *dev,
 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_fd(struct mdinfo *sra, struct mdinfo *dev,
+                       char *name);
+extern int sysfs_fd_get_ll(int fd, unsigned long long *val);
 extern int sysfs_get_ll(struct mdinfo *sra, struct mdinfo *dev,
                        char *name, unsigned long long *val);
+extern int sysfs_fd_get_str(int fd, char *val, int size);
 extern int sysfs_get_str(struct mdinfo *sra, struct mdinfo *dev,
                         char *name, char *val, int size);
 extern int sysfs_set_safemode(struct mdinfo *sra, unsigned long ms);
 extern int sysfs_set_array(struct mdinfo *info, int vers);
-extern int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd,
-                         int in_sync);
+extern int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd);
 extern int sysfs_disk_to_scsi_id(int fd, __u32 *id);
 extern int sysfs_unique_holder(int devnum, long rdev);
 extern int load_sys(char *path, char *buf);
@@ -386,7 +394,8 @@ extern int load_sys(char *path, char *buf);
 extern int save_stripes(int *source, unsigned long long *offsets,
                        int raid_disks, int chunk_size, int level, int layout,
                        int nwrites, int *dest,
-                       unsigned long long start, unsigned long long length);
+                       unsigned long long start, unsigned long long length,
+                       char *buf);
 extern int restore_stripes(int *dest, unsigned long long *offsets,
                           int raid_disks, int chunk_size, int level, int layout,
                           int source, unsigned long long read_offset,
@@ -708,7 +717,6 @@ extern int add_dev(const char *name, const struct stat *stb, int flag, struct FT
 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_reconfig(char *devname, int fd, int layout);
 extern int Manage_subdevs(char *devname, int fd,
                          mddev_dev_t devlist, int verbose);
 extern int autodetect(void);
@@ -716,10 +724,11 @@ 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);
 extern int Grow_reshape(char *devname, int fd, int quiet, char *backup_file,
                        long long size,
-                       int level, int layout, int chunksize, int raid_disks);
+                       int level, char *layout_str, int chunksize, int raid_disks);
 extern int Grow_restart(struct supertype *st, struct mdinfo *info,
-                       int *fdlist, int cnt, char *backup_file);
-
+                       int *fdlist, int cnt, char *backup_file, int verbose);
+extern int Grow_continue(int mdfd, struct supertype *st,
+                        struct mdinfo *info, char *backup_file);
 
 extern int Assemble(struct supertype *st, char *mddev,
                    mddev_ident_t ident,
@@ -749,9 +758,9 @@ extern int Examine(mddev_dev_t devlist, int brief, int export, int scan,
 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);
+                  int dosyslog, int test, char *pidfile, int increments);
 
-extern int Kill(char *dev, int force, int quiet, int noexcl);
+extern int Kill(char *dev, struct supertype *st, int force, int quiet, int noexcl);
 extern int Wait(char *dev);
 extern int WaitClean(char *dev, int sock, int verbose);
 
@@ -775,7 +784,10 @@ extern unsigned long bitmap_sectors(struct bitmap_super_s *bsb);
 
 extern int md_get_version(int fd);
 extern int get_linux_version(void);
+extern long long parse_size(char *size);
 extern int parse_uuid(char *str, int uuid[4]);
+extern int parse_layout_10(char *layout);
+extern int parse_layout_faulty(char *layout);
 extern int check_ext2(int fd, char *name);
 extern int check_reiser(int fd, char *name);
 extern int check_raid(int fd, char *name);