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