]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/btree_update_interior.c
Update bcachefs sources to 481b5f343248 bcachefs: Better error messages for missing...
[bcachefs-tools-debian] / libbcachefs / btree_update_interior.c
index 99e9902fc1e08496af33913dd70625559ce142c3..17a5938aa71a6b43b45c12383e4690df146ee2a3 100644 (file)
@@ -159,7 +159,7 @@ static bool bch2_btree_node_format_fits(struct bch_fs *c, struct btree *b,
 {
        size_t u64s = btree_node_u64s_with_format(nr, &b->format, new_f);
 
-       return __vstruct_bytes(struct btree_node, u64s) < btree_bytes(c);
+       return __vstruct_bytes(struct btree_node, u64s) < btree_buf_bytes(b);
 }
 
 /* Btree node freeing/allocation: */
@@ -556,8 +556,6 @@ static void btree_update_add_key(struct btree_update *as,
 static int btree_update_nodes_written_trans(struct btree_trans *trans,
                                            struct btree_update *as)
 {
-       struct bkey_i *k;
-
        struct jset_entry *e = bch2_trans_jset_entry_alloc(trans, as->journal_u64s);
        int ret = PTR_ERR_OR_ZERO(e);
        if (ret)
@@ -570,7 +568,8 @@ static int btree_update_nodes_written_trans(struct btree_trans *trans,
        for_each_keylist_key(&as->old_keys, k) {
                unsigned level = bkey_i_to_btree_ptr_v2(k)->v.mem_ptr;
 
-               ret = bch2_trans_mark_old(trans, as->btree_id, level, bkey_i_to_s_c(k), 0);
+               ret = bch2_key_trigger_old(trans, as->btree_id, level, bkey_i_to_s_c(k),
+                                          BTREE_TRIGGER_TRANSACTIONAL);
                if (ret)
                        return ret;
        }
@@ -578,7 +577,8 @@ static int btree_update_nodes_written_trans(struct btree_trans *trans,
        for_each_keylist_key(&as->new_keys, k) {
                unsigned level = bkey_i_to_btree_ptr_v2(k)->v.mem_ptr;
 
-               ret = bch2_trans_mark_new(trans, as->btree_id, level, k, 0);
+               ret = bch2_key_trigger_new(trans, as->btree_id, level, bkey_i_to_s(k),
+                                          BTREE_TRIGGER_TRANSACTIONAL);
                if (ret)
                        return ret;
        }
@@ -1097,7 +1097,7 @@ bch2_btree_update_start(struct btree_trans *trans, struct btree_path *path,
                 * Always check for space for two keys, even if we won't have to
                 * split at prior level - it might have been a merge instead:
                 */
-               if (bch2_btree_node_insert_fits(c, path->l[update_level].b,
+               if (bch2_btree_node_insert_fits(path->l[update_level].b,
                                                BKEY_BTREE_PTR_U64s_MAX * 2))
                        break;
 
@@ -1401,7 +1401,7 @@ static void __btree_split_node(struct btree_update *as,
 
                unsigned u64s = nr_keys[i].nr_keys * n[i]->data->format.key_u64s +
                        nr_keys[i].val_u64s;
-               if (__vstruct_bytes(struct btree_node, u64s) > btree_bytes(as->c))
+               if (__vstruct_bytes(struct btree_node, u64s) > btree_buf_bytes(b))
                        n[i]->data->format = b->format;
 
                btree_node_set_format(n[i], n[i]->data->format);
@@ -1703,7 +1703,7 @@ static int bch2_btree_insert_node(struct btree_update *as, struct btree_trans *t
 
        bch2_btree_node_prep_for_write(trans, path, b);
 
-       if (!bch2_btree_node_insert_fits(c, b, bch2_keylist_u64s(keys))) {
+       if (!bch2_btree_node_insert_fits(b, bch2_keylist_u64s(keys))) {
                bch2_btree_node_unlock_write(trans, path, b);
                goto split;
        }
@@ -2158,13 +2158,12 @@ static int __bch2_btree_node_update_key(struct btree_trans *trans,
        int ret;
 
        if (!skip_triggers) {
-               ret = bch2_trans_mark_old(trans, b->c.btree_id, b->c.level + 1,
-                                         bkey_i_to_s_c(&b->key), 0);
-               if (ret)
-                       return ret;
-
-               ret = bch2_trans_mark_new(trans, b->c.btree_id, b->c.level + 1,
-                                         new_key, 0);
+               ret   = bch2_key_trigger_old(trans, b->c.btree_id, b->c.level + 1,
+                                            bkey_i_to_s_c(&b->key),
+                                            BTREE_TRIGGER_TRANSACTIONAL) ?:
+                       bch2_key_trigger_new(trans, b->c.btree_id, b->c.level + 1,
+                                            bkey_i_to_s(new_key),
+                                            BTREE_TRIGGER_TRANSACTIONAL);
                if (ret)
                        return ret;
        }