e2fsck: Fix the wrong error detection for non-extent file
PATCH 1/1 e2fsck: Fix the wrong error detection for non-extent file
When I create a non-extent file with the maximum size in ext4, e2fsck detects the following error:
Pass 1: Checking inodes, blocks, and sizes
Inode 12, i_size is 4402345721856, should be 4402345721856. Fix?
As we know, e2fsck checks the size field of the inode in pass 1. However, in case of the ext4 with the feature of ^extent and huge_file, the maximum file size calculated in e2fsck is less than the real one. The patch fixes this problem.
--- e2fsck/pass1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
e2fsck/pass1.c +1 -1
@@ -583,7 +583,7 @@ void e2fsck_pass1(e2fsck_t ctx) max_sizes =EXT2_NDIR_BLOCKS +EXT2_BPP (i); max_sizes = max_sizes +EXT2_BPP (i) *EXT2_BPP (i); max_sizes = max_sizes +EXT2_BPP (i) *EXT2_BPP (i) *EXT2_BPP (i); - max_sizes = (max_sizes * (1UL << i)) -1 ; + max_sizes = (max_sizes * (1UL << i)); ext2_max_sizes[i -EXT2_MIN_BLOCK_LOG_SIZE ] = max_sizes; }#undef EXT2_BPP
Ted Ts'o
AppliedQuoted 6 lines · Kazuya Mio
When I create a non-extent file with the maximum size in ext4, e2fsck detects the following error:
Pass 1: Checking inodes, blocks, and sizes
Inode 12,i_sizeis 4402345721856, should be 4402345721856. Fix?
Quoted 6 lines
As we know, e2fsck checks the size field of the inode in pass 1. However, in case of the ext4 with the feature of ^extent and
huge_file, the maximum file size calculated in e2fsck is less than the real one. The patch fixes this problem.Signed-off-by Kazuya Mio <[email protected]>
Thanks, applied.
- Ted