On May 10, 2021 / 17:03, Chao Yu wrote: > Hi Shinichiro, > > On 2021/5/10 16:46, Shinichiro Kawasaki wrote: > > On May 10, 2021 / 15:03, Chao Yu wrote: > > > On 2021/5/10 14:40, Shin'ichiro Kawasaki wrote: > > > > When f2fs is set up on zoned block devices, swap files on the file- > > > > system causes unaligned write command errors. The kernel writes to the > > > > swap files directly without the assistance of the filesystem then > > > > it can not fulfill sequential write requirements of zoned block devices. > > > > > > > > To avoid the errors, prevent swap file activation when the filesystem > > > > enables block zoned device support. > > > > > > > > Fixes: 4969c06a0d83 ("f2fs: support swap file w/ DIO") > > > > Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawas...@wdc.com> > > > > Cc: sta...@vger.kernel.org # v5.4+ > > > > --- > > > > fs/f2fs/data.c | 6 ++++++ > > > > 1 file changed, 6 insertions(+) > > > > > > > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > > > > index 96f1a354f89f..51a832efd8cd 100644 > > > > --- a/fs/f2fs/data.c > > > > +++ b/fs/f2fs/data.c > > > > @@ -4050,6 +4050,12 @@ static int f2fs_swap_activate(struct > > > > swap_info_struct *sis, struct file *file, > > > > if (f2fs_readonly(F2FS_I_SB(inode)->sb)) > > > > return -EROFS; > > > > + if (f2fs_sb_has_blkzoned(F2FS_I_SB(inode))) { > > > > > > Should be f2fs_lfs_mode()? because all LFS mode instances will suffer > > > the same problem? > > > > Hi Chao, thanks for the comment. > > > > The problem this patch addresses is the unaligned write command error that > > unique to zoned block devices. Non-zoned, regular block devices do not > > require > > sequential write and do not report the error, even when kernel does > > non-sequential write to the swap files. > > > > My understanding is that LFS mode instances allow the non-sequential write > > to > > swap files. At least, I was able to create a swap file with f2fs LFS mode on > > a non-zoned device, and observed the swap file worked as swap without error. > > Yes, it won't return any error because swap manager knew the L2P mapping info, > and just read or write to LBA bypassing f2fs directly. > > But, IMO, it (swap manager triggers IPU) breaks LFS mode's semantics which > only allow sequential write.
Thanks for sharing your thoughts. I agree with your opinion above. > > > > > In this trial, I did not pin the swap file before swapon. Depending on > > the > > steps to prepare the swap file, the file map to blocks was unaligned to > > sections. When the file map was unaligned, swapon failed with message > > "Swapfile does not align to section". When the map was aligned, swapon > > succeeded. After that, swap file was in pinned status. > > I guess pin feature conflicts with LFS mode... > > So that I guess checking f2fs_lfs_mode() here will be more precious, right? Okay, will post v2 with f2fs_lfs_mode(). -- Best Regards, Shin'ichiro Kawasaki _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel