1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _BCACHEFS_EC_TYPES_H 3 #define _BCACHEFS_EC_TYPES_H 4 5 #include "bcachefs_format.h" 6 7 struct bch_replicas_padded { 8 struct bch_replicas_entry_v1 e; 9 u8 pad[BCH_BKEY_PTRS_MAX]; 10 }; 11 12 struct stripe { 13 size_t heap_idx; 14 u16 sectors; 15 u8 algorithm; 16 u8 nr_blocks; 17 u8 nr_redundant; 18 u8 blocks_nonempty; 19 u8 disk_label; 20 }; 21 22 struct gc_stripe { 23 u16 sectors; 24 25 u8 nr_blocks; 26 u8 nr_redundant; 27 28 unsigned alive:1; /* does a corresponding key exist in stripes btree? */ 29 u16 block_sectors[BCH_BKEY_PTRS_MAX]; 30 struct bch_extent_ptr ptrs[BCH_BKEY_PTRS_MAX]; 31 32 struct bch_replicas_padded r; 33 }; 34 35 struct ec_stripe_heap_entry { 36 size_t idx; 37 unsigned blocks_nonempty; 38 }; 39 40 typedef DEFINE_MIN_HEAP(struct ec_stripe_heap_entry, ec_stripes_heap) ec_stripes_heap; 41 42 #endif /* _BCACHEFS_EC_TYPES_H */ 43