• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
43