]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
f2fs: fix to fallback to buffered IO in IO aligned mode
authorChao Yu <yuchao0@huawei.com>
Wed, 28 Aug 2019 09:33:37 +0000 (17:33 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Mon, 16 Sep 2019 15:38:49 +0000 (08:38 -0700)
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 <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/f2fs.h

index a89ad8cab8218bc668bda018ac6bf7611540a6f8..11c5a6d9f849529f85389e3471030067c654deea 100644 (file)
@@ -3704,9 +3704,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;