]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - libbcachefs/data_update.c
Update bcachefs sources to 90a9c61e2b bcachefs: Switch bch2_btree_delete_range()...
[bcachefs-tools-debian] / libbcachefs / data_update.c
index cc9ae6dad0d5ad7e4ad068893cb9827d68a7077e..3b442b01ca869c1a869e30c0ddaaf516bbd2d8d1 100644 (file)
@@ -23,13 +23,13 @@ static int insert_snapshot_whiteouts(struct btree_trans *trans,
        struct bch_fs *c = trans->c;
        struct btree_iter iter, update_iter;
        struct bkey_s_c k;
-       struct snapshots_seen s;
+       snapshot_id_list s;
        int ret;
 
        if (!btree_type_has_snapshots(id))
                return 0;
 
-       snapshots_seen_init(&s);
+       darray_init(&s);
 
        if (!bkey_cmp(old_pos, new_pos))
                return 0;
@@ -41,7 +41,6 @@ static int insert_snapshot_whiteouts(struct btree_trans *trans,
                             BTREE_ITER_NOT_EXTENTS|
                             BTREE_ITER_ALL_SNAPSHOTS);
        while (1) {
-next:
                k = bch2_btree_iter_prev(&iter);
                ret = bkey_err(k);
                if (ret)
@@ -52,11 +51,9 @@ next:
 
                if (bch2_snapshot_is_ancestor(c, k.k->p.snapshot, old_pos.snapshot)) {
                        struct bkey_i *update;
-                       u32 *i;
 
-                       darray_for_each(s.ids, i)
-                               if (bch2_snapshot_is_ancestor(c, k.k->p.snapshot, *i))
-                                       goto next;
+                       if (snapshot_list_has_ancestor(c, &s, k.k->p.snapshot))
+                               continue;
 
                        update = bch2_trans_kmalloc(trans, sizeof(struct bkey_i));
 
@@ -79,13 +76,13 @@ next:
                        if (ret)
                                break;
 
-                       ret = snapshots_seen_add(c, &s, k.k->p.snapshot);
+                       ret = snapshot_list_add(c, &s, k.k->p.snapshot);
                        if (ret)
                                break;
                }
        }
        bch2_trans_iter_exit(trans, &iter);
-       darray_exit(&s.ids);
+       darray_exit(&s);
 
        return ret;
 }
@@ -239,7 +236,7 @@ static int bch2_data_update_index_update(struct bch_write_op *op)
                                bch2_ob_add_backpointer(c, ec_ob, &insert->k);
                }
 err:
-               if (ret == -EINTR)
+               if (bch2_err_matches(ret, BCH_ERR_transaction_restart))
                        ret = 0;
                if (ret)
                        break;
@@ -275,7 +272,7 @@ out:
        bch2_trans_exit(&trans);
        bch2_bkey_buf_exit(&_insert, c);
        bch2_bkey_buf_exit(&_new, c);
-       BUG_ON(ret == -EINTR);
+       BUG_ON(bch2_err_matches(ret, BCH_ERR_transaction_restart));
        return ret;
 }