Skip to content

Commit ef1669f

Browse files
koverstreetKent Overstreet
authored andcommitted
bcachefs: Update fsck for snapshots
This updates the fsck algorithms to handle snapshots - meaning there will be multiple versions of the same key (extents, inodes, dirents, xattrs) in different snapshots, and we have to carefully consider which keys are visible in which snapshot. Signed-off-by: Kent Overstreet <[email protected]>
1 parent 6fed42b commit ef1669f

File tree

3 files changed

+1044
-363
lines changed

3 files changed

+1044
-363
lines changed

fs/bcachefs/btree_update.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ int bch2_btree_insert(struct bch_fs *, enum btree_id, struct bkey_i *,
6161
struct disk_reservation *, u64 *, int flags);
6262

6363
int bch2_btree_delete_range_trans(struct btree_trans *, enum btree_id,
64-
struct bpos, struct bpos, u64 *);
64+
struct bpos, struct bpos, unsigned, u64 *);
6565
int bch2_btree_delete_range(struct bch_fs *, enum btree_id,
6666
struct bpos, struct bpos, u64 *);
6767

fs/bcachefs/btree_update_leaf.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1204,13 +1204,14 @@ int bch2_btree_delete_at(struct btree_trans *trans,
12041204

12051205
int bch2_btree_delete_range_trans(struct btree_trans *trans, enum btree_id id,
12061206
struct bpos start, struct bpos end,
1207+
unsigned iter_flags,
12071208
u64 *journal_seq)
12081209
{
12091210
struct btree_iter iter;
12101211
struct bkey_s_c k;
12111212
int ret = 0;
12121213

1213-
bch2_trans_iter_init(trans, &iter, id, start, BTREE_ITER_INTENT);
1214+
bch2_trans_iter_init(trans, &iter, id, start, BTREE_ITER_INTENT|iter_flags);
12141215
retry:
12151216
while ((bch2_trans_begin(trans),
12161217
(k = bch2_btree_iter_peek(&iter)).k) &&
@@ -1277,5 +1278,5 @@ int bch2_btree_delete_range(struct bch_fs *c, enum btree_id id,
12771278
u64 *journal_seq)
12781279
{
12791280
return bch2_trans_do(c, NULL, journal_seq, 0,
1280-
bch2_btree_delete_range_trans(&trans, id, start, end, journal_seq));
1281+
bch2_btree_delete_range_trans(&trans, id, start, end, 0, journal_seq));
12811282
}

0 commit comments

Comments
 (0)