]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.h
util: Finally kill off md_get_version()
[thirdparty/mdadm.git] / mdadm.h
diff --git a/mdadm.h b/mdadm.h
index 5bcfb8610ad2e49a93b1dc17fe8100ec38a61b37..f1f643c794d4b36fb1065d3450ab24d4aaa488db 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -279,6 +279,15 @@ struct mdinfo {
        int journal_device_required;
        int journal_clean;
 
+       enum {
+               CONSISTENCY_POLICY_UNKNOWN,
+               CONSISTENCY_POLICY_NONE,
+               CONSISTENCY_POLICY_RESYNC,
+               CONSISTENCY_POLICY_BITMAP,
+               CONSISTENCY_POLICY_JOURNAL,
+               CONSISTENCY_POLICY_PPL,
+       } consistency_policy;
+
        /* During reshape we can sometimes change the data_offset to avoid
         * over-writing still-valid data.  We need to know if there is space.
         * So getinfo_super will fill in space_before and space_after in sectors.
@@ -291,6 +300,9 @@ struct mdinfo {
                #define MaxSector  (~0ULL) /* resync/recovery complete position */
        };
        long                    bitmap_offset;  /* 0 == none, 1 == a file */
+       unsigned int            ppl_size;
+       int                     ppl_offset;
+       unsigned long long      ppl_sector;
        unsigned long           safe_mode_delay; /* ms delay to mark clean */
        int                     new_level, delta_disks, new_layout, new_chunk;
        int                     errors;
@@ -426,6 +438,7 @@ enum special_options {
        ClusterName,
        ClusterConfirm,
        WriteJournal,
+       ConsistencyPolicy,
 };
 
 enum prefix_standard {
@@ -527,6 +540,7 @@ struct shape {
        int     assume_clean;
        int     write_behind;
        unsigned long long size;
+       int     consistency_policy;
 };
 
 /* List of device names - wildcards expanded */
@@ -618,13 +632,14 @@ enum sysfs_read_flags {
        GET_STATE       = (1 << 23),
        GET_ERROR       = (1 << 24),
        GET_ARRAY_STATE = (1 << 25),
+       GET_CONSISTENCY_POLICY  = (1 << 26),
 };
 
 /* If fd >= 0, get the array it is open on,
  * else use devnm.
  */
 extern int sysfs_open(char *devnm, char *devname, char *attr);
-extern void sysfs_init(struct mdinfo *mdi, int fd, char *devnm);
+extern int sysfs_init(struct mdinfo *mdi, int fd, char *devnm);
 extern void sysfs_init_dev(struct mdinfo *mdi, unsigned long devid);
 extern void sysfs_free(struct mdinfo *sra);
 extern struct mdinfo *sysfs_read(int fd, char *devnm, unsigned long options);
@@ -701,7 +716,7 @@ extern int restore_stripes(int *dest, unsigned long long *offsets,
 
 extern char *map_num(mapping_t *map, int num);
 extern int map_name(mapping_t *map, char *name);
-extern mapping_t r5layout[], r6layout[], pers[], modes[], faultylayout[];
+extern mapping_t r5layout[], r6layout[], pers[], modes[], faultylayout[], consistency_policies[];
 
 extern char *map_dev_preferred(int major, int minor, int create,
                               char *prefer);
@@ -863,7 +878,7 @@ extern struct superswitch {
         * metadata.
         */
        int (*init_super)(struct supertype *st, mdu_array_info_t *info,
-                         unsigned long long size, char *name,
+                         struct shape *s, char *name,
                          char *homehost, int *uuid,
                          unsigned long long data_offset);
 
@@ -961,7 +976,7 @@ extern struct superswitch {
                                 int *chunk, unsigned long long size,
                                 unsigned long long data_offset,
                                 char *subdev, unsigned long long *freesize,
-                                int verbose);
+                                int consistency_policy, int verbose);
 
        /* Return a linked list of 'mdinfo' structures for all arrays
         * in the container.  For non-containers, it is like
@@ -1059,6 +1074,13 @@ extern struct superswitch {
        /* validate container after assemble */
        int (*validate_container)(struct mdinfo *info);
 
+       /* write initial empty PPL on device */
+       int (*write_init_ppl)(struct supertype *st, struct mdinfo *info, int fd);
+
+       /* validate ppl before assemble */
+       int (*validate_ppl)(struct supertype *st, struct mdinfo *info,
+                           struct mdinfo *disk);
+
        /* records new bad block in metadata */
        int (*record_bad_block)(struct active_array *a, int n,
                                        unsigned long long sector, int length);
@@ -1309,6 +1331,8 @@ extern int Grow_restart(struct supertype *st, struct mdinfo *info,
 extern int Grow_continue(int mdfd, struct supertype *st,
                         struct mdinfo *info, char *backup_file,
                         int forked, int freeze_reshape);
+extern int Grow_consistency_policy(char *devname, int fd,
+                                  struct context *c, struct shape *s);
 
 extern int restore_backup(struct supertype *st,
                          struct mdinfo *content,
@@ -1380,7 +1404,9 @@ extern int Dump_metadata(char *dev, char *dir, struct context *c,
 extern int Restore_metadata(char *dev, char *dir, struct context *c,
                            struct supertype *st, int only);
 
-extern int md_get_version(int fd);
+int md_get_array_info(int fd, struct mdu_array_info_s *array);
+int md_set_array_info(int fd, struct mdu_array_info_s *array);
+int md_get_disk_info(int fd, struct mdu_disk_info_s *disk);
 extern int get_linux_version(void);
 extern int mdadm_version(char *version);
 extern unsigned long long parse_size(char *size);
@@ -1476,7 +1502,8 @@ extern int add_disk(int mdfd, struct supertype *st,
                    struct mdinfo *sra, struct mdinfo *info);
 extern int remove_disk(int mdfd, struct supertype *st,
                       struct mdinfo *sra, struct mdinfo *info);
-extern int hot_remove_disk(int mdfd, unsigned long dev);
+extern int hot_remove_disk(int mdfd, unsigned long dev, int force);
+extern int sys_hot_remove_disk(int statefd, int force);
 extern int set_array_info(int mdfd, struct supertype *st, struct mdinfo *info);
 unsigned long long min_recovery_start(struct mdinfo *array);