]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.h
super1: simplify setting of array size.
[thirdparty/mdadm.git] / mdadm.h
diff --git a/mdadm.h b/mdadm.h
index c83a85cb018a7e04aa65813ecf9c78582d5c996c..5463bfba868338513031dffc5127f188240fda93 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -51,7 +51,6 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
 #define srandom srand
 #endif
 
-
 #include       <linux/kdev_t.h>
 /*#include     <linux/fs.h> */
 #include       <sys/mount.h>
@@ -162,7 +161,6 @@ extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
 #endif
 #endif /* __KLIBC__ */
 
-
 /*
  * min()/max()/clamp() macros that also do
  * strict type-checking.. See the
@@ -233,7 +231,7 @@ struct mdinfo {
        int container_enough; /* flag external handlers can set to
                               * indicate that subarrays have not enough (-1),
                               * enough to start (0), or all expected disks (1) */
-       char            sys_name[20];
+       char            sys_name[20];
        struct mdinfo *devs;
        struct mdinfo *next;
 
@@ -448,7 +446,6 @@ typedef struct mapping {
        int num;
 } mapping_t;
 
-
 struct mdstat_ent {
        char            *dev;
        char            devnm[32];
@@ -463,11 +460,12 @@ struct mdstat_ent {
        struct dev_member {
                char                    *name;
                struct dev_member       *next;
-       }               *members;
+       }               *members;
        struct mdstat_ent *next;
 };
 
 extern struct mdstat_ent *mdstat_read(int hold, int start);
+extern void mdstat_close(void);
 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);
@@ -487,12 +485,22 @@ extern int map_update(struct map_ent **mpp, char *devnm, char *metadata,
                      int uuid[4], char *path);
 extern void map_remove(struct map_ent **map, char *devnm);
 extern struct map_ent *map_by_uuid(struct map_ent **map, int uuid[4]);
+#ifdef MDASSEMBLE
+static inline struct map_ent *map_by_devnm(struct map_ent **map, char *name)
+{
+       return NULL;
+}
+static inline void map_free(struct map_ent *map)
+{
+}
+#else
 extern struct map_ent *map_by_devnm(struct map_ent **map, char *devnm);
+extern void map_free(struct map_ent *map);
+#endif
 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, char *devnm);
-extern void map_free(struct map_ent *map);
 extern void map_add(struct map_ent **melp,
                    char *devnm, char *metadata, int uuid[4], char *path);
 extern int map_lock(struct map_ent **melp);
@@ -541,6 +549,9 @@ extern int sysfs_get_fd(struct mdinfo *sra, struct mdinfo *dev,
 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_two(int fd, unsigned long long *v1, unsigned long long *v2);
+extern int sysfs_get_two(struct mdinfo *sra, struct mdinfo *dev,
+                        char *name, unsigned long long *v1, unsigned long long *v2);
 extern int sysfs_fd_get_str(int fd, char *val, int size);
 extern int sysfs_attribute_available(struct mdinfo *sra, struct mdinfo *dev,
                                     char *name);
@@ -552,6 +563,7 @@ extern int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd, int resume);
 extern int sysfs_disk_to_scsi_id(int fd, __u32 *id);
 extern int sysfs_unique_holder(char *devnm, long rdev);
 extern int sysfs_freeze_array(struct mdinfo *sra);
+extern int sysfs_wait(int fd, int *msec);
 extern int load_sys(char *path, char *buf);
 extern int reshape_prepare_fdlist(char *devname,
                                  struct mdinfo *sra,
@@ -605,7 +617,6 @@ static inline char *map_dev(int major, int minor, int create)
 struct active_array;
 struct metadata_update;
 
-
 /* 'struct reshape' records the intermediate states of
  * a general reshape.
  * The starting geometry is converted to the 'before' geometry
@@ -892,7 +903,7 @@ extern struct superswitch {
         * (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.
-        * If 'consistent' is '2', then the array can mark it dirty if a 
+        * If 'consistent' is '2', then the array can mark it dirty if a
         * resync/recovery/whatever is required, or leave it clean if not.
         * Return value is 0 dirty (not consistent) and 1 if clean.
         * it is only really important if consistent is passed in as '2'.
@@ -986,6 +997,7 @@ struct supertype {
        void *info;
        void *other; /* Hack used to convert v0.90 to v1.0 */
        unsigned long long devsize;
+       unsigned long long data_offset; /* used by v1.x only */
        int ignore_hw_compat; /* used to inform metadata handlers that it should ignore
                                 HW/firmware related incompatability to load metadata.
                                 Used when examining metadata to display content of disk
@@ -1156,10 +1168,10 @@ struct stat64;
 
 extern int add_dev(const char *name, const struct stat *stb, int flag, struct FTW *s);
 
-
 extern int Manage_ro(char *devname, int fd, int readonly);
-extern int Manage_runstop(char *devname, int fd, int runstop, int quiet,
-                         int will_retry);
+extern int Manage_run(char *devname, int fd, int quiet);
+extern int Manage_stop(char *devname, int fd, int quiet,
+                      int will_retry);
 extern int Manage_subdevs(char *devname, int fd,
                          struct mddev_dev *devlist, int verbose, int test,
                          char *update, int force);
@@ -1280,6 +1292,7 @@ extern char *conf_word(FILE *file, int allow_key);
 extern void print_quoted(char *str);
 extern void print_escape(char *str);
 extern int use_udev(void);
+extern unsigned long GCD(unsigned long a, unsigned long b);
 extern int conf_name_is_free(char *name);
 extern int conf_verify_devnames(struct mddev_ident *array_list);
 extern int devname_matches(char *name, char *match);
@@ -1384,7 +1397,7 @@ extern char *fd2devnm(int fd);
 static inline int is_subarray(char *vers)
 {
        /* The version string for a 'subarray' (an array in a container)
-        * is 
+        * is
         *    /containername/componentname    for normal read-write arrays
         *    -containername/componentname    for arrays which mdmon must not
         *                                    reconfigure.  They might be read-only
@@ -1435,7 +1448,6 @@ char *xstrdup(const char *str);
 #define LEVEL_CONTAINER                (-100)
 #define        LEVEL_UNSUPPORTED       (-200)
 
-
 /* faulty stuff */
 
 #define        WriteTransient  0
@@ -1455,7 +1467,6 @@ char *xstrdup(const char *str);
 #define        ModeMask        0x1f
 #define        ModeShift       5
 
-
 #ifdef __TINYC__
 #undef minor
 #undef major
@@ -1493,7 +1504,6 @@ char *xstrdup(const char *str);
 #define ALGORITHM_ROTATING_N_RESTART   9 /* DDF PRL=6 RLQ=2 */
 #define ALGORITHM_ROTATING_N_CONTINUE  10 /*DDF PRL=6 RLQ=3 */
 
-
 /* For every RAID5 algorithm we define a RAID6 algorithm
  * with exactly the same layout for data and parity, and
  * with the Q block always on the last device (N-1).