diff --git a/.bcachefs_revision b/.bcachefs_revision index b28d5986..87373ae5 100644 --- a/.bcachefs_revision +++ b/.bcachefs_revision @@ -1 +1 @@ -7bfc741f64204731ceeabf3061c0470613c67e86 +a27d7265e75f6d65c2b972ce4ac27abfc153c230 diff --git a/libbcachefs/btree_update_interior.c b/libbcachefs/btree_update_interior.c index f1b72e58..f6f2517d 100644 --- a/libbcachefs/btree_update_interior.c +++ b/libbcachefs/btree_update_interior.c @@ -45,6 +45,8 @@ static void btree_node_interior_verify(struct btree *b) while (1) { k = bch2_btree_node_iter_peek_unpack(&iter, b, &unpacked); + if (k.k->type != KEY_TYPE_btree_ptr_v2) + break; bp = bkey_s_c_to_btree_ptr_v2(k); BUG_ON(bkey_cmp(next_node, bp.v->min_key)); @@ -725,7 +727,7 @@ again: bch2_journal_res_put(&c->journal, &res); bch2_journal_preres_put(&c->journal, &as->journal_preres); - +free_update: /* Do btree write after dropping journal res: */ if (b) { /* @@ -736,8 +738,9 @@ again: six_unlock_intent(&b->lock); } - btree_update_nodes_reachable(as, res.seq); -free_update: + if (!ret) + btree_update_nodes_reachable(as, res.seq); + __bch2_btree_update_free(as); /* * for flush_held_btree_writes() waiting on updates to flush or diff --git a/libbcachefs/btree_update_leaf.c b/libbcachefs/btree_update_leaf.c index b305c2e4..7faf98fd 100644 --- a/libbcachefs/btree_update_leaf.c +++ b/libbcachefs/btree_update_leaf.c @@ -250,7 +250,8 @@ static inline void btree_insert_entry_checks(struct btree_trans *trans, BUG_ON(bkey_cmp(insert->k.p, iter->pos)); BUG_ON(debug_check_bkeys(c) && - bch2_bkey_invalid(c, bkey_i_to_s_c(insert), iter->btree_id)); + bch2_bkey_invalid(c, bkey_i_to_s_c(insert), + __btree_node_type(iter->level, iter->btree_id))); } static noinline int