f2fs-tools: fix to check total valid block count before block allocation
authorChao Yu <yuchao0@huawei.com>
Mon, 15 Apr 2019 09:14:38 +0000 (17:14 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 20 Aug 2019 18:23:51 +0000 (11:23 -0700)
commit7d4480baa9ec8e695ce0e223fbc2996387bf7f6c
tree4455a6c5984e0b7fcfda15d8d6cf108c6b51f429
parent668e8154404b9577d95c641e8ff45ad19a6fb5b8
f2fs-tools: fix to check total valid block count before block allocation

Now, kernel can catch incorrect total valid block count which is exceed
max user block count of image.

Then, generic/051,476 of fstest reports below message:

Apr 15 11:08:03 szvp000201624 kernel: [ 2533.515813] F2FS-fs (zram1): Wrong valid_user_blocks: 469505, user_block_count: 469504
Apr 15 11:08:03 szvp000201624 kernel: [ 2533.519166] F2FS-fs (zram1): Failed to get valid F2FS checkpoint

The reason is that when fsck repairs corrupted quota sysfile, it didn't
check max user block count when allocating new block for quota sysfile,
so ckpt.valid_block_count can exceed max user block count, result in
mount failure later.

Adding upper boundary check of block count in reserve_new_block() to
fix this issue.

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fsck/dir.c
fsck/fsck.h
fsck/node.c
fsck/segment.c