Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
423 | giacomo | 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 | |||
17 | mempool_t *pool; |
||
18 | }; |
||
19 | |||
20 | typedef struct multipath_private_data multipath_conf_t; |
||
21 | |||
22 | /* |
||
23 | * this is the only point in the RAID code where we violate |
||
24 | * C type safety. mddev->private is an 'opaque' pointer. |
||
25 | */ |
||
26 | #define mddev_to_conf(mddev) ((multipath_conf_t *) mddev->private) |
||
27 | |||
28 | /* |
||
29 | * this is our 'private' 'collective' MULTIPATH buffer head. |
||
30 | * it contains information about what kind of IO operations were started |
||
31 | * for this MULTIPATH operation, and about their status: |
||
32 | */ |
||
33 | |||
34 | struct multipath_bh { |
||
35 | mddev_t *mddev; |
||
36 | struct bio *master_bio; |
||
37 | struct bio bio; |
||
38 | int path; |
||
39 | struct multipath_bh *next_mp; /* next for retry */ |
||
40 | }; |
||
41 | #endif |