147f521baSLinus Torvalds /* SPDX-License-Identifier: GPL-2.0 */ 2935fe098SMike Snitzer #ifndef _MULTIPATH_H 3935fe098SMike Snitzer #define _MULTIPATH_H 4935fe098SMike Snitzer 5935fe098SMike Snitzer struct multipath_info { 6935fe098SMike Snitzer struct md_rdev *rdev; 7935fe098SMike Snitzer }; 8935fe098SMike Snitzer 9935fe098SMike Snitzer struct mpconf { 10935fe098SMike Snitzer struct mddev *mddev; 11935fe098SMike Snitzer struct multipath_info *multipaths; 12935fe098SMike Snitzer int raid_disks; 13935fe098SMike Snitzer spinlock_t device_lock; 14935fe098SMike Snitzer struct list_head retry_list; 15935fe098SMike Snitzer 16afeee514SKent Overstreet mempool_t pool; 17935fe098SMike Snitzer }; 18935fe098SMike Snitzer 19935fe098SMike Snitzer /* 20935fe098SMike Snitzer * this is our 'private' 'collective' MULTIPATH buffer head. 21935fe098SMike Snitzer * it contains information about what kind of IO operations were started 22935fe098SMike Snitzer * for this MULTIPATH operation, and about their status: 23935fe098SMike Snitzer */ 24935fe098SMike Snitzer 25935fe098SMike Snitzer struct multipath_bh { 26935fe098SMike Snitzer struct mddev *mddev; 27935fe098SMike Snitzer struct bio *master_bio; 28935fe098SMike Snitzer struct bio bio; 29935fe098SMike Snitzer int path; 30935fe098SMike Snitzer struct list_head retry_list; 31935fe098SMike Snitzer }; 32935fe098SMike Snitzer #endif 33