bad commit: 3977c965ec35ce1a7eac988ad313f0fc9aee9660 Zerrout trick allow us to optimize cases where it is more reasonable to explicitly zeroout extent and mark it as initialized instead of splitting to several small ones. But this optimization is not acceptable is extent is beyond i_size Because it is not possible to have initialized blocks after i_size. Fsck treat this as incorrect inode size. #TESTCASE mkfs.ext4 /dev/sdb1 mount /dev/sdb1 /mnt ./falloc_test /mnt/F1 umount /mnt fsck.ext4 -f /dev/sdb1 fsck.ext4 -f /dev/sdb1 e2fsck 1.41.9 (22-Aug-2009) Pass 1: Checking inodes, blocks, and sizes Inode 12, i_size is 1, should be 40960. Fix<y>? no
Created attachment 25931 [details] testcase
Proposed patch: http://patchwork.ozlabs.org/patch/49856/