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