From: Kent Overstreet Date: Wed, 20 Jul 2022 21:35:57 +0000 (-0400) Subject: bcachefs: Fix check_i_sectors() X-Git-Tag: v6.7-rc1~201^2~860 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7903e3d2d7e5266dde40c9db746fafb078f84f4f;p=thirdparty%2Fkernel%2Flinux.git bcachefs: Fix check_i_sectors() bch2_count_inode_sectors() uses for_each_btree_key() internally, which handles lock restarts - the lockrestart_do() in check_i_sectors() is redundant, and buggy here since the count that bch2_count_inode_sectors() returns was interpreted as an error by lockrestart_do(). Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/fsck.c b/fs/bcachefs/fsck.c index 306983811c1b6..ea264421fe8f0 100644 --- a/fs/bcachefs/fsck.c +++ b/fs/bcachefs/fsck.c @@ -1122,8 +1122,7 @@ static int check_i_sectors(struct btree_trans *trans, struct inode_walker *w) if (i->inode.bi_sectors == i->count) continue; - count2 = lockrestart_do(trans, - bch2_count_inode_sectors(trans, w->cur_inum, i->snapshot)); + count2 = bch2_count_inode_sectors(trans, w->cur_inum, i->snapshot); if (i->count != count2) { bch_err(c, "fsck counted i_sectors wrong: got %llu should be %llu",