multipath.h revision ef740c372dfd80e706dbf955d4e4aedda6c0c148
1#ifndef _MULTIPATH_H
2#define _MULTIPATH_H
3
4#include <linux/raid/md.h>
5
6struct multipath_info {
7	mdk_rdev_t	*rdev;
8};
9
10struct 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
21typedef 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
35struct 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