Commit | Line | Data |
---|---|---|
1da177e4 LT |
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 |