summaryrefslogtreecommitdiff
path: root/libbcachefs/data_update.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2022-07-15 17:24:21 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2022-07-15 17:24:21 -0400
commit0e69c66198aa76c59130747c7f10f5d72e5e2afd (patch)
treecca1f1bdcf2d28992f0eae5613cb0b64be82f0ea /libbcachefs/data_update.c
parent5ec29da373fa39680dcb5aa41f78b93d85fbb51f (diff)
Update bcachefs sources to 17a344f265 bcachefs: Improve fsck for subvols/snapshots
Diffstat (limited to 'libbcachefs/data_update.c')
-rw-r--r--libbcachefs/data_update.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/libbcachefs/data_update.c b/libbcachefs/data_update.c
index cc9ae6da..c181dba6 100644
--- a/libbcachefs/data_update.c
+++ b/libbcachefs/data_update.c
@@ -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;
}