1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _RAID0_H 3 #define _RAID0_H 4 5 struct strip_zone { 6 sector_t zone_end; /* Start of the next zone (in sectors) */ 7 sector_t dev_start; /* Zone offset in real dev (in sectors) */ 8 int nb_dev; /* # of devices attached to the zone */ 9 int disk_shift; /* start disk for the original layout */ 10 }; 11 12 /* Linux 3.14 (20d0189b101) made an unintended change to 13 * the RAID0 layout for multi-zone arrays (where devices aren't all 14 * the same size. 15 * RAID0_ORIG_LAYOUT restores the original layout 16 * RAID0_ALT_MULTIZONE_LAYOUT uses the altered layout 17 * The layouts are identical when there is only one zone (all 18 * devices the same size). 19 */ 20 21 enum r0layout { 22 RAID0_ORIG_LAYOUT = 1, 23 RAID0_ALT_MULTIZONE_LAYOUT = 2, 24 }; 25 struct r0conf { 26 struct strip_zone *strip_zone; 27 struct md_rdev **devlist; /* lists of rdevs, pointed to 28 * by strip_zone->dev */ 29 int nr_strip_zones; 30 enum r0layout layout; 31 }; 32 33 #endif 34