]> git.baikalelectronics.ru Git - kernel.git/commit
ext4: fix symlink file size not match to file content
authorYe Bin <yebin10@huawei.com>
Mon, 21 Mar 2022 14:44:38 +0000 (22:44 +0800)
committerTheodore Ts'o <tytso@mit.edu>
Wed, 13 Apr 2022 02:22:14 +0000 (22:22 -0400)
commit5a589991d1ff8aeaae826dac62dfc3287d878997
treefdff6216c18ca3182652f90b390b10fd6bcee8f7
parent9160fc9ea26c09cb1fd472da9de81c8f2fd050e5
ext4: fix symlink file size not match to file content

We got issue as follows:
[home]# fsck.ext4  -fn  ram0yb
e2fsck 1.45.6 (20-Mar-2020)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Symlink /p3/d14/d1a/l3d (inode #3494) is invalid.
Clear? no
Entry 'l3d' in /p3/d14/d1a (3383) has an incorrect filetype (was 7, should be 0).
Fix? no

As the symlink file size does not match the file content. If the writeback
of the symlink data block failed, ext4_finish_bio() handles the end of IO.
However this function fails to mark the buffer with BH_write_io_error and
so when unmount does journal checkpoint it cannot detect the writeback
error and will cleanup the journal. Thus we've lost the correct data in the
journal area. To solve this issue, mark the buffer as BH_write_io_error in
ext4_finish_bio().

Cc: stable@kernel.org
Signed-off-by: Ye Bin <yebin10@huawei.com>
Reviewed-by: Jan Kara <jack@suse.cz>
Link: https://lore.kernel.org/r/20220321144438.201685-1-yebin10@huawei.com
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
fs/ext4/page-io.c