Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6
[linux-2.6] / include / linux / raid / multipath.h
1 #ifndef _MULTIPATH_H
2 #define _MULTIPATH_H
3
4 #include <linux/raid/md.h>
5
6 struct multipath_info {
7         mdk_rdev_t      *rdev;
8 };
9
10 struct multipath_private_data {
11         mddev_t                 *mddev;
12         struct multipath_info   *multipaths;
13         int                     raid_disks;
14         int                     working_disks;
15         spinlock_t              device_lock;
16         struct list_head        retry_list;
17
18         mempool_t               *pool;
19 };
20
21 typedef struct multipath_private_data multipath_conf_t;
22
23 /*
24  * this is the only point in the RAID code where we violate
25  * C type safety. mddev->private is an 'opaque' pointer.
26  */
27 #define mddev_to_conf(mddev) ((multipath_conf_t *) mddev->private)
28
29 /*
30  * this is our 'private' 'collective' MULTIPATH buffer head.
31  * it contains information about what kind of IO operations were started
32  * for this MULTIPATH operation, and about their status:
33  */
34
35 struct multipath_bh {
36         mddev_t                 *mddev;
37         struct bio              *master_bio;
38         struct bio              bio;
39         int                     path;
40         struct list_head        retry_list;
41 };
42 #endif