diff options
Diffstat (limited to 'libbcachefs/btree_update_interior.c')
-rw-r--r-- | libbcachefs/btree_update_interior.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/libbcachefs/btree_update_interior.c b/libbcachefs/btree_update_interior.c index 350e2f9b..98e85627 100644 --- a/libbcachefs/btree_update_interior.c +++ b/libbcachefs/btree_update_interior.c @@ -1310,7 +1310,7 @@ static void btree_split(struct btree_update *as, struct btree *b, btree_split_insert_keys(as, n1, iter, keys); if (vstruct_blocks(n1->data, c->block_bits) > BTREE_SPLIT_THRESHOLD(c)) { - trace_btree_node_split(c, b, b->nr.live_u64s); + trace_btree_split(c, b); n2 = __btree_split_node(as, n1, iter); @@ -1340,7 +1340,7 @@ static void btree_split(struct btree_update *as, struct btree *b, bch2_btree_node_write(c, n3, &as->cl, SIX_LOCK_intent); } } else { - trace_btree_node_compact(c, b, b->nr.live_u64s); + trace_btree_compact(c, b); bch2_btree_build_aux_trees(n1); six_unlock_write(&n1->lock); @@ -1882,12 +1882,13 @@ retry: if (new_hash) { mutex_lock(&c->btree_cache_lock); + bch2_btree_node_hash_remove(c, new_hash); + bch2_btree_node_hash_remove(c, b); bkey_copy(&b->key, &new_key->k_i); - __bch2_btree_node_hash_insert(c, b); - - bch2_btree_node_hash_remove(c, new_hash); + ret = __bch2_btree_node_hash_insert(c, b); + BUG_ON(ret); mutex_unlock(&c->btree_cache_lock); } else { bkey_copy(&b->key, &new_key->k_i); @@ -1959,7 +1960,10 @@ int bch2_btree_root_alloc(struct bch_fs *c, enum btree_id id, while (1) { /* XXX haven't calculated capacity yet :/ */ - as = bch2_btree_update_start(c, id, 1, 0, &cl); + as = bch2_btree_update_start(c, id, 1, + BTREE_INSERT_USE_RESERVE| + BTREE_INSERT_USE_ALLOC_RESERVE, + &cl); if (!IS_ERR(as)) break; |