From: Nikita Ofitserov <himi...@gmail.com>

It is possible that fsck first miscounted the expected sector count (due
to applying other fixes at the same time, for example) and then
corrected itself using extents. No need to log an fsck error and
write the inode in this case.

Signed-off-by: Nikita Ofitserov <himi...@gmail.com>
---
 fs/bcachefs/fsck.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/bcachefs/fsck.c b/fs/bcachefs/fsck.c
index 
1ceca63c87a3bf3eb75d396f7a10949c502b0e8d..471e93a3f00c637050b5c485d72b27cfb284282d
 100644
--- a/fs/bcachefs/fsck.c
+++ b/fs/bcachefs/fsck.c
@@ -1638,7 +1638,8 @@ static int check_i_sectors_notnested(struct btree_trans 
*trans, struct inode_wal
                        i->count = count2;
                }
 
-               if (fsck_err_on(!(i->inode.bi_flags & 
BCH_INODE_i_sectors_dirty),
+               if (fsck_err_on(!(i->inode.bi_flags & 
BCH_INODE_i_sectors_dirty) &&
+                               i->inode.bi_sectors != i->count,
                                trans, inode_i_sectors_wrong,
                                "inode %llu:%u has incorrect i_sectors: got 
%llu, should be %llu",
                                w->last_pos.inode, i->inode.bi_snapshot,

---
base-commit: 14a12362bb22b3735c51ecdb712570a12992a695
change-id: 20250703-isectors-not-wrong-8e8a126cf307

Best regards,
-- 
Nikita Ofitserov



Reply via email to