mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2025-10-22 15:03:53 +02:00
bcachefs: Add missing snapshots_seen_add_inorder()
This fixes an infinite loop when repairing "extent past end of inode",
when the extent is an older snapshot than the inode that needs repair.
Without the snaphsots_seen_add_inorder() we keep trying to delete the
same extent, even though it's no longer visible in the inode's snapshot.
Fixes: 63d6e93119
("bcachefs: bch2_fpunch_snapshot()")
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
parent
1831840c2b
commit
c37495fe35
|
@ -1920,11 +1920,12 @@ static int check_extent(struct btree_trans *trans, struct btree_iter *iter,
|
|||
"extent type past end of inode %llu:%u, i_size %llu\n%s",
|
||||
i->inode.bi_inum, i->inode.bi_snapshot, i->inode.bi_size,
|
||||
(bch2_bkey_val_to_text(&buf, c, k), buf.buf))) {
|
||||
ret = bch2_fpunch_snapshot(trans,
|
||||
SPOS(i->inode.bi_inum,
|
||||
last_block,
|
||||
i->inode.bi_snapshot),
|
||||
POS(i->inode.bi_inum, U64_MAX));
|
||||
ret = snapshots_seen_add_inorder(c, s, i->inode.bi_snapshot) ?:
|
||||
bch2_fpunch_snapshot(trans,
|
||||
SPOS(i->inode.bi_inum,
|
||||
last_block,
|
||||
i->inode.bi_snapshot),
|
||||
POS(i->inode.bi_inum, U64_MAX));
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user