+/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _BCACHEFS_EC_TYPES_H
#define _BCACHEFS_EC_TYPES_H
-#include <linux/llist.h>
+#include "bcachefs_format.h"
-#define EC_STRIPE_MAX 16
+struct bch_replicas_padded {
+ struct bch_replicas_entry_v1 e;
+ u8 pad[BCH_BKEY_PTRS_MAX];
+};
struct stripe {
size_t heap_idx;
-
u16 sectors;
u8 algorithm;
+ u8 nr_blocks;
+ u8 nr_redundant;
+ u8 blocks_nonempty;
+};
+
+struct gc_stripe {
+ u16 sectors;
u8 nr_blocks;
u8 nr_redundant;
- u8 alive;
- atomic_t blocks_nonempty;
- atomic_t block_sectors[EC_STRIPE_MAX];
+ unsigned alive:1; /* does a corresponding key exist in stripes btree? */
+ u16 block_sectors[BCH_BKEY_PTRS_MAX];
+ struct bch_extent_ptr ptrs[BCH_BKEY_PTRS_MAX];
+
+ struct bch_replicas_padded r;
};
struct ec_stripe_heap_entry {