On 12/12, Dan Carpenter wrote:> > Chao, thoughts?
On Mon, Aug 19, 2024 at 05:34:30PM +0900, Yeongjin Gil wrote:
In f2fs_do_write_data_page, when the data block is NULL_ADDR, it skips
writepage considering that it has been already truncated.
This results in an infinite loop as the PAGECACHE_TAG_TOWRITE tag is not
cleared during the writeback process for a compressed file including
NULL_ADDR in compress_mode=user.
This is the reproduction process:
1. dd if=/dev/zero bs=4096 count=1024 seek=1024 of=testfile
2. f2fs_io compress testfile
3. dd if=/dev/zero bs=4096 count=1 conv=notrunc of=testfile
4. f2fs_io decompress testfile
To prevent the problem, let's check whether the cluster is fully
allocated before redirty its pages.
We were discussing how to detect these sorts of things in the future.
Presumably a user found this by chance? Xfstests has two tests which deal
with compression tests/f2fs/002 and tests/f2fs/007. But it feels like
xfstests is not really the right place for this sort of thing, it would
be better as part of some sort of fuzz testing.
What do you think?
Yeah, agreed that we must have tests to catch this. One way may be creating
some basic disk images having some possible valid layout to see f2fs can
work as intended. I feel we can put it in xfstests as wel?
regards,
dan carpenter