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