From 990d42d1873c16b6080c887f6bb27e56c0f885cf Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sat, 4 Dec 2021 23:07:33 -0500 Subject: bcachefs: Split out struct gc_stripe from struct stripe We have two radix trees of stripes - one that mirrors some information from the stripes btree in normal operation, and another that GC uses to recalculate block usage counts. The normal one is now only used for finding partially empty stripes in order to reuse them - the normal stripes radix tree and the GC stripes radix tree are used significantly differently, so this patch splits them into separate types. In an upcoming patch we'll be replacing c->stripes with a btree that indexes stripes by the order we want to reuse them. Signed-off-by: Kent Overstreet --- fs/bcachefs/ec_types.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'fs/bcachefs/ec_types.h') diff --git a/fs/bcachefs/ec_types.h b/fs/bcachefs/ec_types.h index 3fc31222459a..edd93da663c1 100644 --- a/fs/bcachefs/ec_types.h +++ b/fs/bcachefs/ec_types.h @@ -21,6 +21,15 @@ struct stripe { 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]; -- cgit v1.2.3