f2fs: set SBI_NEED_FSCK flag when inconsistent node block found
authorWeichao Guo <guoweichao@oppo.com>
Sat, 18 Sep 2021 12:46:36 +0000 (20:46 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 1 Dec 2021 08:04:55 +0000 (09:04 +0100)
[ Upstream commit 6663b138ded1a59e630c9e605e42aa7fde490cdc ]

Inconsistent node block will cause a file fail to open or read,
which could make the user process crashes or stucks. Let's mark
SBI_NEED_FSCK flag to trigger a fix at next fsck time. After
unlinking the corrupted file, the user process could regenerate
a new one and work correctly.

Signed-off-by: Weichao Guo <guoweichao@oppo.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/f2fs/node.c

index e863136..556fcd8 100644 (file)
@@ -1443,6 +1443,7 @@ page_hit:
                          nid, nid_of_node(page), ino_of_node(page),
                          ofs_of_node(page), cpver_of_node(page),
                          next_blkaddr_of_node(page));
+               set_sbi_flag(sbi, SBI_NEED_FSCK);
                err = -EINVAL;
 out_err:
                ClearPageUptodate(page);