bcachefs: Always descend to leaf nodes it btree_gc
authorKent Overstreet <kent.overstreet@gmail.com>
Thu, 23 Jun 2022 02:53:43 +0000 (22:53 -0400)
committerKent Overstreet <kent.overstreet@linux.dev>
Sun, 22 Oct 2023 21:09:34 +0000 (17:09 -0400)
If a btree node is unreadable, it's the topology repair that fixes that
and it's kicked off by btree_gc, so btree_gc needs to touch every node
and very that they can be read.

Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
fs/bcachefs/btree_gc.c

index 2de5d97a9d2c6d6ecea9f180552e483addd91630..0447f5a51b5edf06f14df3f64573e4256240b2a3 100644 (file)
@@ -851,10 +851,7 @@ static int bch2_gc_btree(struct btree_trans *trans, enum btree_id btree_id,
        struct bch_fs *c = trans->c;
        struct btree_iter iter;
        struct btree *b;
-       unsigned depth = metadata_only                  ? 1
-               : bch2_expensive_debug_checks           ? 0
-               : !btree_node_type_needs_gc(btree_id)   ? 1
-               : 0;
+       unsigned depth = metadata_only ? 1 : 0;
        int ret = 0;
 
        gc_pos_set(c, gc_pos_btree(btree_id, POS_MIN, 0));
@@ -997,10 +994,7 @@ static int bch2_gc_btree_init(struct btree_trans *trans,
 {
        struct bch_fs *c = trans->c;
        struct btree *b;
-       unsigned target_depth = metadata_only           ? 1
-               : bch2_expensive_debug_checks           ? 0
-               : !btree_node_type_needs_gc(btree_id)   ? 1
-               : 0;
+       unsigned target_depth = metadata_only ? 1 : 0;
        struct printbuf buf = PRINTBUF;
        int ret = 0;