/* SPDX-License-Identifier: GPL-2.0 */ #ifndef _BCACHEFS_EC_FORMAT_H #define _BCACHEFS_EC_FORMAT_H struct bch_stripe { struct bch_val v; __le16 sectors; __u8 algorithm; __u8 nr_blocks; __u8 nr_redundant; __u8 csum_granularity_bits; __u8 csum_type; /* * XXX: targets should be 16 bits - fix this if we ever do a stripe_v2 * * we can manage with this because this only needs to point to a * disk label, not a target: */ __u8 disk_label; /* * Variable length sections: * - Pointers * - Checksums * 2D array of [stripe block/device][csum block], with checksum block * size given by csum_granularity_bits * - Block sector counts: per-block array of u16s * * XXX: * Either checksums should have come last, or we should have included a * checksum_size field (the size in bytes of the checksum itself, not * the blocksize the checksum covers). * * Currently we aren't able to access the block sector counts if the * checksum type is unknown. */ struct bch_extent_ptr ptrs[]; } __packed __aligned(8); #endif /* _BCACHEFS_EC_FORMAT_H */