In LFS mode, we allow OPU for direct IO, however, we didn't consider
IO alignment feature, so direct IO can trigger unaligned IO, let's
just fallback to buffered IO to keep correct IO alignment semantics
in all places.

Fixes: f847c699cff3 ("f2fs: allow out-place-update for direct IO in LFS mode")
Signed-off-by: Chao Yu <yuch...@huawei.com>
---
 fs/f2fs/f2fs.h | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 4b21ac42d44e..0522641c0c17 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -3733,9 +3733,12 @@ static inline bool f2fs_force_buffered_io(struct inode 
*inode,
         */
        if (f2fs_sb_has_blkzoned(sbi))
                return true;
-       if (test_opt(sbi, LFS) && (rw == WRITE) &&
-                               block_unaligned_IO(inode, iocb, iter))
-               return true;
+       if (test_opt(sbi, LFS) && (rw == WRITE)) {
+               if (block_unaligned_IO(inode, iocb, iter))
+                       return true;
+               if (F2FS_IO_ALIGNED(sbi))
+                       return true;
+       }
        if (is_sbi_flag_set(F2FS_I_SB(inode), SBI_CP_DISABLED) &&
                                        !IS_SWAPFILE(inode))
                return true;
-- 
2.18.0.rc1



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

Reply via email to