bcachefs: Fix overlapping extent repair

overlapping extent repair was colliding with extent past end of inode
checks - don't update "extent ends at" until we know we have an extent.

Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
Kent Overstreet 2024-03-30 01:00:50 -04:00
parent 8ce1db8091
commit eab3a3ce2d
1 changed files with 6 additions and 4 deletions

View File

@ -1372,10 +1372,6 @@ static int check_overlapping_extents(struct btree_trans *trans,
goto err;
}
ret = extent_ends_at(c, extent_ends, seen, k);
if (ret)
goto err;
extent_ends->last_pos = k.k->p;
err:
return ret;
@ -1505,6 +1501,12 @@ static int check_extent(struct btree_trans *trans, struct btree_iter *iter,
i->seen_this_pos = true;
}
if (k.k->type != KEY_TYPE_whiteout) {
ret = extent_ends_at(c, extent_ends, s, k);
if (ret)
goto err;
}
out:
err:
fsck_err: