Re: [f2fs-dev] f2fs do DIO write make file corruption

From: Wu Bo
Date: Tue Aug 10 2021 - 23:29:03 EST



在 2021/8/11 11:03, Chao Yu 写道:
On 2021/8/11 10:48, Wu Bo wrote:
I use the following command to create a file, the file may got corruption:
    f2fs_io write 2 0 512 inc_num dio $path

And when I use bio or to set the chunk size to 1 block, the file is
normal. The commands as following:
    f2fs_io write 2 0 512 inc_num buffered $path
    f2fs_io write 1 0 512 inc_num dio $path

I find this bug on old kernel version 4.14.117, and not find on version
4.19.152. So this bug is fixed. Can anyone can tell me which patch fixed
this bug?

Not sure,

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-4.19.y&id=7bae8b6b73e46c307fa355ce086800b7ad6610f8

This patch is applied. The issue occurs when f2fs dio try to preallocate multiple blocks and got scattered disk blocks. The log as following:
my_f2fs_io-13425 [002] .... 395.583637: el0_irq_naked: 1:type:1,ino:40132,off:768,old_blk:0,new_blk:185764
my_f2fs_io-13425 [002] .... 395.583710: el0_irq_naked: 1:type:1,ino:40132,off:769,old_blk:0,new_blk:205824
my_f2fs_io-13425 [002] .... 395.583721: f2fs_map_blocks: dev = (259,23), ino = 40132, file offset = 768, start blkaddr = 0x2d5a4, len = 0x2, err = 0
my_f2fs_io-13425 [002] .... 395.583735: f2fs_map_blocks: dev = (259,23), ino = 40132, file offset = 768, start blkaddr = 0x2d5a4, len = 0x1, err = 0
my_f2fs_io-13425 [002] .... 395.583741: f2fs_map_blocks: dev = (259,23), ino = 40132, file offset = 769, start blkaddr = 0x32400, len = 0x1, err = 0

And if the blocks are continuously, the file data is normal:
my_f2fs_io-13425 [002] .... 395.584037: el0_irq_naked: 1:type:1,ino:40132,off:770,old_blk:0,new_blk:205825
my_f2fs_io-13425 [002] .... 395.584066: el0_irq_naked: 1:type:1,ino:40132,off:771,old_blk:0,new_blk:205826
my_f2fs_io-13425 [002] .... 395.584077: f2fs_map_blocks: dev = (259,23), ino = 40132, file offset = 770, start blkaddr = 0x32401, len = 0x2, err = 0
my_f2fs_io-13425 [002] .... 395.584091: f2fs_map_blocks: dev = (259,23), ino = 40132, file offset = 770, start blkaddr = 0x32401, len = 0x2, err = 0


Thanks,



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel