| From d927ccfccb009ede24448d69c08b12e7c8a6979b Mon Sep 17 00:00:00 2001 |
| From: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> |
| Date: Mon, 10 May 2021 20:24:44 +0900 |
| Subject: f2fs: Prevent swap file in LFS mode |
| |
| From: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> |
| |
| commit d927ccfccb009ede24448d69c08b12e7c8a6979b upstream. |
| |
| The kernel writes to swap files on f2fs directly without the assistance |
| of the filesystem. This direct write by kernel can be non-sequential |
| even when the f2fs is in LFS mode. Such non-sequential write conflicts |
| with the LFS semantics. Especially when f2fs is set up on zoned block |
| devices, the non-sequential write causes unaligned write command errors. |
| |
| To avoid the non-sequential writes to swap files, prevent swap file |
| activation when the filesystem is in LFS mode. |
| |
| Fixes: 4969c06a0d83 ("f2fs: support swap file w/ DIO") |
| Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com> |
| Cc: stable@vger.kernel.org # v5.10+ |
| Reviewed-by: Chao Yu <yuchao0@huawei.com> |
| Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/f2fs/data.c | 6 ++++++ |
| 1 file changed, 6 insertions(+) |
| |
| --- a/fs/f2fs/data.c |
| +++ b/fs/f2fs/data.c |
| @@ -4112,6 +4112,12 @@ static int f2fs_swap_activate(struct swa |
| if (f2fs_readonly(F2FS_I_SB(inode)->sb)) |
| return -EROFS; |
| |
| + if (f2fs_lfs_mode(F2FS_I_SB(inode))) { |
| + f2fs_err(F2FS_I_SB(inode), |
| + "Swapfile not supported in LFS mode"); |
| + return -EINVAL; |
| + } |
| + |
| ret = f2fs_convert_inline_inode(inode); |
| if (ret) |
| return ret; |