xref: /linux/fs/bcachefs/ec_types.h (revision 4a4b30ea80d8cb5e8c4c62bb86201f4ea0d9b030)
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  	u8			lock;
24  	unsigned		alive:1; /* does a corresponding key exist in stripes btree? */
25  	u16			sectors;
26  	u8			nr_blocks;
27  	u8			nr_redundant;
28  	u16			block_sectors[BCH_BKEY_PTRS_MAX];
29  	struct bch_extent_ptr	ptrs[BCH_BKEY_PTRS_MAX];
30  
31  	struct bch_replicas_padded r;
32  };
33  
34  #endif /* _BCACHEFS_EC_TYPES_H */
35