From: Kent Overstreet Date: Fri, 5 Apr 2019 03:01:54 +0000 (-0400) Subject: bcachefs: initial gc no longer needs to touch every node X-Git-Tag: io_uring-6.7-2023-11-10~119^2~2491 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=4881fdb7566dcc52aaf05f9b8f044a5ecfeff81b;p=linux-2.6-block.git bcachefs: initial gc no longer needs to touch every node Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/btree_gc.c b/fs/bcachefs/btree_gc.c index c572391c4dad..84a0bb9202c4 100644 --- a/fs/bcachefs/btree_gc.c +++ b/fs/bcachefs/btree_gc.c @@ -210,7 +210,10 @@ static int bch2_gc_btree(struct bch_fs *c, enum btree_id btree_id, struct btree_iter *iter; struct btree *b; struct range_checks r; - unsigned depth = btree_node_type_needs_gc(btree_id) ? 0 : 1; + unsigned depth = metadata_only ? 1 + : expensive_debug_checks(c) ? 0 + : !btree_node_type_needs_gc(btree_id) ? 1 + : 0; u8 max_stale; int ret = 0; @@ -218,17 +221,6 @@ static int bch2_gc_btree(struct bch_fs *c, enum btree_id btree_id, gc_pos_set(c, gc_pos_btree(btree_id, POS_MIN, 0)); - /* - * if expensive_debug_checks is on, run range_checks on all leaf nodes: - * - * and on startup, we have to read every btree node (XXX: only if it was - * an unclean shutdown) - */ - if (metadata_only) - depth = 1; - else if (initial || expensive_debug_checks(c)) - depth = 0; - btree_node_range_checks_init(&r, depth); __for_each_btree_node(&trans, iter, btree_id, POS_MIN,