]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - mdadm.h
Add 'force' flag to *hot_remove_disk().
[thirdparty/mdadm.git] / mdadm.h
diff --git a/mdadm.h b/mdadm.h
index 013ed6415dd424a0fe3c4793075e842462335864..cebc0c0a249f9c976fe5ca84a63abcf533679f0c 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -439,6 +439,10 @@ enum bitmap_update {
     NodeNumUpdate,
 };
 
+enum flag_mode {
+       FlagDefault, FlagSet, FlagClear,
+};
+
 /* structures read from config file */
 /* List of mddevice names and identifiers
  * Identifiers can be:
@@ -532,8 +536,8 @@ struct mddev_dev {
                                 * 'A' for re_add.
                                 * Not set for names read from .config
                                 */
-       char writemostly;       /* 1 for 'set writemostly', 2 for 'clear writemostly' */
-       char failfast;          /* Ditto but for 'failfast' flag */
+       enum flag_mode writemostly;
+       enum flag_mode failfast;
        int used;               /* set when used */
        long long data_offset;
        struct mddev_dev *next;
@@ -548,7 +552,7 @@ struct mdstat_ent {
        char            devnm[32];
        int             active;
        char            *level;
-       char            *pattern; /* U or up, _ for down */
+       char            *pattern; /* U for up, _ for down */
        int             percent; /* -1 if no resync */
        int             resync; /* 3 if check, 2 if reshape, 1 if resync, 0 if recovery */
        int             devcnt;
@@ -738,7 +742,7 @@ struct reshape {
        unsigned long long new_size; /* New size of array in sectors */
 };
 
-/* A superswitch provides entry point the a metadata handler.
+/* A superswitch provides entry point to a metadata handler.
  *
  * The superswitch primarily operates on some "metadata" that
  * is accessed via the 'supertype'.
@@ -1059,6 +1063,13 @@ extern struct superswitch {
        int (*record_bad_block)(struct active_array *a, int n,
                                        unsigned long long sector, int length);
 
+       /* clears bad block from metadata */
+       int (*clear_bad_block)(struct active_array *a, int n,
+                                       unsigned long long sector, int length);
+
+       /* get list of bad blocks from metadata */
+       struct md_bb *(*get_bad_blocks)(struct active_array *a, int n);
+
        int swapuuid; /* true if uuid is bigending rather than hostendian */
        int external;
        const char *name; /* canonical metadata name */
@@ -1465,6 +1476,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, 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);