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
7struct bch_replicas_padded {
8 struct bch_replicas_entry_v1 e;
9 u8 pad[BCH_BKEY_PTRS_MAX];
10};
11
12struct 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};
20
21struct gc_stripe {
22 u16 sectors;
23
24 u8 nr_blocks;
25 u8 nr_redundant;
26
27 unsigned alive:1; /* does a corresponding key exist in stripes btree? */
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
34struct ec_stripe_heap_entry {
35 size_t idx;
36 unsigned blocks_nonempty;
37};
38
39typedef HEAP(struct ec_stripe_heap_entry) ec_stripes_heap;
40
41#endif /* _BCACHEFS_EC_TYPES_H */
42

source code of linux/fs/bcachefs/ec_types.h