root/drivers/md/raid0.h
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _RAID0_H
#define _RAID0_H

struct strip_zone {
        sector_t zone_end;      /* Start of the next zone (in sectors) */
        sector_t dev_start;     /* Zone offset in real dev (in sectors) */
        int      nb_dev;        /* # of devices attached to the zone */
        int      disk_shift;    /* start disk for the original layout */
};

/* Linux 3.14 (20d0189b101) made an unintended change to
 * the RAID0 layout for multi-zone arrays (where devices aren't all
 * the same size.
 * RAID0_ORIG_LAYOUT restores the original layout
 * RAID0_ALT_MULTIZONE_LAYOUT uses the altered layout
 * The layouts are identical when there is only one zone (all
 * devices the same size).
 */

enum r0layout {
        RAID0_ORIG_LAYOUT = 1,
        RAID0_ALT_MULTIZONE_LAYOUT = 2,
};
struct r0conf {
        struct strip_zone       *strip_zone;
        struct md_rdev          **devlist; /* lists of rdevs, pointed to
                                            * by strip_zone->dev */
        int                     nr_strip_zones;
        enum r0layout           layout;
};

#endif