From 66df14687d6a905aa111ec7327357a3ae1ad3236 Mon Sep 17 00:00:00 2001 From: Kazuya Mio Date: Fri, 25 Nov 2011 21:31:09 -0500 Subject: [PATCH] e2fsck: fix the max size calculation 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. Signed-off-by: Kazuya Mio Signed-off-by: Theodore Ts'o --- e2fsck/pass1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2fsck/pass1.c b/e2fsck/pass1.c index 532e132..00e46d0 100644 --- a/e2fsck/pass1.c +++ b/e2fsck/pass1.c @@ -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 -- 1.8.3.1