diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index 81394c08ef85..f03320c47c82 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c @@ -4490,6 +4490,10 @@ static ssize_t f2fs_file_read_iter(struct kiocb *iocb, struct iov_iter *to) if (trace_f2fs_dataread_start_enabled()) f2fs_trace_rw_file_path(iocb, iov_iter_count(to), READ); + /* In LFS mode, if there is inflight dio, wait for its completion */ + if (f2fs_lfs_mode(F2FS_I_SB(inode))) + inode_dio_wait(inode); + if (f2fs_should_use_dio(inode, iocb, to)) { ret = f2fs_dio_read_iter(iocb, to); } else {