]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/ec_types.h
Update bcachefs sources to dab31ca168 bcachefs: Add some logging for btree node rewri...
[bcachefs-tools-debian] / libbcachefs / ec_types.h
index feb360101ecbd02c5d999dc87be592b26106c118..2bf26d254b2cdf53cc0f6af89ecec85e06d0327b 100644 (file)
@@ -1,11 +1,15 @@
+/* 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       e;
+       u8                              pad[BCH_BKEY_PTRS_MAX];
+};
 
-struct ec_stripe {
+struct stripe {
        size_t                  heap_idx;
 
        u16                     sectors;
@@ -14,10 +18,22 @@ struct ec_stripe {
        u8                      nr_blocks;
        u8                      nr_redundant;
 
-       u8                      alive;
-       atomic_t                pin;
-       atomic_t                blocks_nonempty;
-       atomic_t                block_sectors[EC_STRIPE_MAX];
+       unsigned                alive:1; /* does a corresponding key exist in stripes btree? */
+       unsigned                on_heap:1;
+       u8                      blocks_nonempty;
+};
+
+struct gc_stripe {
+       u16                     sectors;
+
+       u8                      nr_blocks;
+       u8                      nr_redundant;
+
+       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 {