raid5-ppl: PPL support for disks with write-back cache enabled
[sfrench/cifs-2.6.git] / drivers / md / md.h
index 7d6bcf0eba0c5a9e1dc3505178cd245a6432ecc3..58cd20a5e85edb1db853661dcd749d99682a796c 100644 (file)
@@ -485,6 +485,7 @@ enum recovery_flags {
        MD_RECOVERY_RESHAPE,    /* A reshape is happening */
        MD_RECOVERY_FROZEN,     /* User request to abort, and not restart, any action */
        MD_RECOVERY_ERROR,      /* sync-action interrupted because io-error */
+       MD_RECOVERY_WAIT,       /* waiting for pers->start() to finish */
 };
 
 static inline int __must_check mddev_lock(struct mddev *mddev)
@@ -523,7 +524,13 @@ struct md_personality
        struct list_head list;
        struct module *owner;
        bool (*make_request)(struct mddev *mddev, struct bio *bio);
+       /*
+        * start up works that do NOT require md_thread. tasks that
+        * requires md_thread should go into start()
+        */
        int (*run)(struct mddev *mddev);
+       /* start up works that require md threads */
+       int (*start)(struct mddev *mddev);
        void (*free)(struct mddev *mddev, void *priv);
        void (*status)(struct seq_file *seq, struct mddev *mddev);
        /* error_handler must set ->faulty and clear ->in_sync
@@ -687,6 +694,7 @@ extern int strict_strtoul_scaled(const char *cp, unsigned long *res, int scale);
 
 extern void mddev_init(struct mddev *mddev);
 extern int md_run(struct mddev *mddev);
+extern int md_start(struct mddev *mddev);
 extern void md_stop(struct mddev *mddev);
 extern void md_stop_writes(struct mddev *mddev);
 extern int md_rdev_init(struct md_rdev *rdev);
@@ -702,6 +710,7 @@ extern void md_reload_sb(struct mddev *mddev, int raid_disk);
 extern void md_update_sb(struct mddev *mddev, int force);
 extern void md_kick_rdev_from_array(struct md_rdev * rdev);
 struct md_rdev *md_find_rdev_nr_rcu(struct mddev *mddev, int nr);
+struct md_rdev *md_find_rdev_rcu(struct mddev *mddev, dev_t dev);
 
 static inline void rdev_dec_pending(struct md_rdev *rdev, struct mddev *mddev)
 {