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

Reply via email to