Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6
[linux-2.6-microblaze.git] / drivers / md / md.h
index fb7eab5..832547c 100644 (file)
@@ -395,10 +395,10 @@ struct mddev {
         * that we are never stopping an array while it is open.
         * 'reconfig_mutex' protects all other reconfiguration.
         * These locks are separate due to conflicting interactions
-        * with bdev->bd_mutex.
+        * with disk->open_mutex.
         * Lock ordering is:
-        *  reconfig_mutex -> bd_mutex
-        *  bd_mutex -> open_mutex:  e.g. __blkdev_get -> md_open
+        *  reconfig_mutex -> disk->open_mutex
+        *  disk->open_mutex -> open_mutex:  e.g. __blkdev_get -> md_open
         */
        struct mutex                    open_mutex;
        struct mutex                    reconfig_mutex;
@@ -481,13 +481,13 @@ struct mddev {
        atomic_t                        max_corr_read_errors; /* max read retries */
        struct list_head                all_mddevs;
 
-       struct attribute_group          *to_remove;
+       const struct attribute_group    *to_remove;
 
        struct bio_set                  bio_set;
        struct bio_set                  sync_set; /* for sync operations like
                                                   * metadata and bitmap writes
                                                   */
-       mempool_t                       md_io_pool;
+       struct bio_set                  io_acct_set; /* for raid0 and raid5 io accounting */
 
        /* Generic flush handling.
         * The last to finish preflush schedules a worker to submit
@@ -613,7 +613,7 @@ struct md_sysfs_entry {
        ssize_t (*show)(struct mddev *, char *);
        ssize_t (*store)(struct mddev *, const char *, size_t);
 };
-extern struct attribute_group md_bitmap_group;
+extern const struct attribute_group md_bitmap_group;
 
 static inline struct kernfs_node *sysfs_get_dirent_safe(struct kernfs_node *sd, char *name)
 {
@@ -684,6 +684,12 @@ struct md_thread {
        void                    *private;
 };
 
+struct md_io_acct {
+       struct bio *orig_bio;
+       unsigned long start_time;
+       struct bio bio_clone;
+};
+
 #define THREAD_WAKEUP  0
 
 static inline void safe_put_page(struct page *p)
@@ -715,6 +721,7 @@ extern void md_error(struct mddev *mddev, struct md_rdev *rdev);
 extern void md_finish_reshape(struct mddev *mddev);
 void md_submit_discard_bio(struct mddev *mddev, struct md_rdev *rdev,
                        struct bio *bio, sector_t start, sector_t size);
+void md_account_bio(struct mddev *mddev, struct bio **bio);
 
 extern bool __must_check md_flush_request(struct mddev *mddev, struct bio *bio);
 extern void md_super_write(struct mddev *mddev, struct md_rdev *rdev,