]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.h
Exit when there are no more arrays to manage.
[thirdparty/mdadm.git] / mdadm.h
diff --git a/mdadm.h b/mdadm.h
index 29cfbf2ba2176a357e54d509d8941ed0b87483a4..5586dce47b593088b9a967e1fa99daf5a2f2dada 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -292,7 +292,7 @@ struct mdstat_ent {
 extern struct mdstat_ent *mdstat_read(int hold, int start);
 extern void free_mdstat(struct mdstat_ent *ms);
 extern void mdstat_wait(int seconds);
-extern void mdstat_wait_fd(int fd);
+extern void mdstat_wait_fd(int fd, const sigset_t *sigmask);
 extern int mddev_busy(int devnum);
 
 struct map_ent {
@@ -342,7 +342,7 @@ extern int sysfs_get_ll(struct mdinfo *sra, struct mdinfo *dev,
                        char *name, unsigned long long *val);
 extern int sysfs_set_array(struct mdinfo *sra,
                           struct mdinfo *info);
-extern int sysfs_add_disk(struct mdinfo *sra, int fd, struct mdinfo *sd);
+extern int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd);
 
 
 
@@ -411,9 +411,24 @@ extern struct superswitch {
 
 /* for mdmon */
        int (*open_new)(struct supertype *c, struct active_array *a, int inst);
+       /* This tells the metadata handler that all data up to sync_pos is
+        * known to be insync, and will stay insync until told otherwise.
+        * All data beyond sync_pos may not be insync.
+        * If sync_pos == 0, this marks the array as 'dirty'.
+        * If sync_pos == ~0, this marks it as fully 'clean'.
+        * If other numbers cannot be stored, they should be treated as 0.
+        * mark_clean is always called with a sync_pos of 0 before any
+        * write to an array with redundancy is allowed.
+        */
        void (*mark_clean)(struct active_array *a, unsigned long long sync_pos);
-       void (*mark_dirty)(struct active_array *a);
-       void (*mark_sync)(struct active_array *a, unsigned long long resync);
+
+       /* When the state of a device might have changed, we call set_disk to
+        * tell the metadata what the current state is.
+        * Typically this happens on spare->in_sync and (spare|in_sync)->faulty
+        * transitions.
+        * set_disk might be called when the state of the particular disk has
+        * not in fact changed.
+        */
        void (*set_disk)(struct active_array *a, int n, int state);
        void (*sync_metadata)(struct active_array *a);
 
@@ -437,14 +452,15 @@ struct supertype {
 
        /* extra stuff used by mdmon */
        struct active_array *arrays;
-       int devfd;
        int sock; /* listen to external programs */
-       int pipe[2]; /* communicate between threads */
+       int mgr_pipe[2]; /* communicate between threads */
+       int mon_pipe[2]; /* communicate between threads */
        int devnum;
        char *devname; /* e.g. md0.  This appears in metadata_verison:
                        *  external:/md0/12
                        */
        int devcnt;
+       char *device_name; /* e.g. /dev/md/whatever */
 
        struct mdinfo *devs;