]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.h
Change mark_clean to set_array_state.
[thirdparty/mdadm.git] / mdadm.h
diff --git a/mdadm.h b/mdadm.h
index 20ed452027d63afeaadbc1fa9746ea563587eea8..b6102aaa3acf4147446d46573184432989ce2e07 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -411,16 +411,15 @@ 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.
+
+       /* Tell the metadata handler the current state of the array.
+        * This covers whether it is known to be consistent (no pending writes)
+        * when how far along a resync is known to have progressed
+        * (in a->resync_start).
+        * resync status is really irrelevant if the array is not consistent,
+        * but some metadata (DDF!) have a place to record the distinction.
         */
-       void (*mark_clean)(struct active_array *a, unsigned long long sync_pos);
+       void (*set_array_state)(struct active_array *a, int consistent);
 
        /* When the state of a device might have changed, we call set_disk to
         * tell the metadata what the current state is.
@@ -452,7 +451,6 @@ struct supertype {
 
        /* extra stuff used by mdmon */
        struct active_array *arrays;
-       int devfd;
        int sock; /* listen to external programs */
        int mgr_pipe[2]; /* communicate between threads */
        int mon_pipe[2]; /* communicate between threads */
@@ -461,6 +459,7 @@ struct supertype {
                        *  external:/md0/12
                        */
        int devcnt;
+       char *device_name; /* e.g. /dev/md/whatever */
 
        struct mdinfo *devs;
 
@@ -584,6 +583,7 @@ extern int check_raid(int fd, char *name);
 
 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 parse_auto(char *str, char *msg, int config);
@@ -629,9 +629,27 @@ extern int open_mddev_devnum(char *devname, int devnum, char *name,
                             char *chosen_name, int parts);
 extern int open_container(int fd);
 
+extern int mdmon_running(int devnum);
+extern int signal_mdmon(int devnum);
+
 extern char *devnum2devname(int num);
 extern int fd2devnum(int fd);
 
+static inline int dev2major(int d)
+{
+       if (d >= 0)
+               return MD_MAJOR;
+       else
+               return get_mdp_major();
+}
+
+static inline int dev2minor(int d)
+{
+       if (d >= 0)
+               return d;
+       return (-1-d) << MdpMinorShift;
+}
+
 #define        LEVEL_MULTIPATH         (-4)
 #define        LEVEL_LINEAR            (-1)
 #define        LEVEL_FAULTY            (-5)