diff options
Diffstat (limited to 'fs/bcachefs/btree_update_interior.c')
-rw-r--r-- | fs/bcachefs/btree_update_interior.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c index 0952338de28f..76897cf15946 100644 --- a/fs/bcachefs/btree_update_interior.c +++ b/fs/bcachefs/btree_update_interior.c @@ -66,7 +66,11 @@ int bch2_btree_node_check_topology(struct btree_trans *trans, struct btree *b) bkey_init(&prev.k->k); bch2_btree_and_journal_iter_init_node_iter(trans, &iter, b); - if (btree_node_is_root(c, b)) { + /* + * Don't use btree_node_is_root(): we're called by btree split, after + * creating a new root but before setting it + */ + if (b == btree_node_root(c, b)) { if (!bpos_eq(b->data->min_key, POS_MIN)) { bch2_log_msg_start(c, &buf); prt_printf(&buf, "btree root with incorrect min_key: "); @@ -222,7 +226,7 @@ static void __btree_node_free(struct btree_trans *trans, struct btree *b) BUG_ON(btree_node_write_blocked(b)); BUG_ON(btree_node_dirty(b)); BUG_ON(btree_node_need_write(b)); - BUG_ON(btree_node_is_root(c, b)); + BUG_ON(b == btree_node_root(c, b)); BUG_ON(b->ob.nr); BUG_ON(!list_empty(&b->write_blocked)); BUG_ON(b->will_make_reachable); |