summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2020-07-21 11:51:17 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2020-07-21 11:51:17 -0400
commitd62c33c62e1e4e4366a4aebc289e527e21cf8e97 (patch)
tree494b56d88f01c2957258bf9567468423749f5453
parent152274b005abe42bbb3a8e03b1ba9c4b75509c92 (diff)
bcachefs: Fix a faulty assertion
Now that updates to interior nodes are journalled, we shouldn't be checking topology of interior nodes until we've finished replaying updates to that node. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
-rw-r--r--fs/bcachefs/btree_update_interior.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c
index b41916f93c9b..69c87cf1faa1 100644
--- a/fs/bcachefs/btree_update_interior.c
+++ b/fs/bcachefs/btree_update_interior.c
@@ -26,7 +26,7 @@
/*
* Verify that child nodes correctly span parent node's range:
*/
-static void btree_node_interior_verify(struct btree *b)
+static void btree_node_interior_verify(struct bch_fs *c, struct btree *b)
{
#ifdef CONFIG_BCACHEFS_DEBUG
struct bpos next_node = b->data->min_key;
@@ -37,6 +37,9 @@ static void btree_node_interior_verify(struct btree *b)
BUG_ON(!b->c.level);
+ if (!test_bit(BCH_FS_BTREE_INTERIOR_REPLAY_DONE, &c->flags))
+ return;
+
bch2_btree_node_iter_init_from_start(&iter, b);
while (1) {
@@ -1120,8 +1123,8 @@ static struct btree *__btree_split_node(struct btree_update *as,
bch2_verify_btree_nr_keys(n2);
if (n1->c.level) {
- btree_node_interior_verify(n1);
- btree_node_interior_verify(n2);
+ btree_node_interior_verify(as->c, n1);
+ btree_node_interior_verify(as->c, n2);
}
return n2;
@@ -1180,7 +1183,7 @@ static void btree_split_insert_keys(struct btree_update *as, struct btree *b,
BUG_ON(b->nsets != 1 ||
b->nr.live_u64s != le16_to_cpu(btree_bset_first(b)->u64s));
- btree_node_interior_verify(b);
+ btree_node_interior_verify(as->c, b);
}
static void btree_split(struct btree_update *as, struct btree *b,
@@ -1378,7 +1381,7 @@ void bch2_btree_insert_node(struct btree_update *as, struct btree *b,
bch2_btree_node_unlock_write(b, iter);
- btree_node_interior_verify(b);
+ btree_node_interior_verify(c, b);
/*
* when called from the btree_split path the new nodes aren't added to