diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2022-07-15 17:24:21 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2022-07-15 17:24:21 -0400 |
commit | 0e69c66198aa76c59130747c7f10f5d72e5e2afd (patch) | |
tree | cca1f1bdcf2d28992f0eae5613cb0b64be82f0ea /libbcachefs/data_update.c | |
parent | 5ec29da373fa39680dcb5aa41f78b93d85fbb51f (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.c | 15 |
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; } |