Re: [PATCH v4 6/9] f2fs: don't allow DIO reads but not DIO writes

Jaegeuk Kim
2022-07-24T02:02:08Z

On 07/22, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@google.com>
>
> Currently, if an f2fs filesystem is mounted with the mode=lfs and
> io_bits mount options, DIO reads are allowed but DIO writes are not.
> Allowing DIO reads but not DIO writes is an unusual restriction, which
> is likely to be surprising to applications, namely any application that
> both reads and writes from a file (using O_DIRECT). This behavior is
> also incompatible with the proposed STATX_DIOALIGN extension to statx.
> Given this, let's drop the support for DIO reads in this configuration.

IIRC, we allowed DIO reads since applications complained a lower performance.
So, I'm afraid this change will make another confusion to users. Could
you please apply the new bahavior only for STATX_DIOALIGN?

>
> Signed-off-by: Eric Biggers <ebiggers@google.com>
> ---
> fs/f2fs/file.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
> index 5e5c97fccfb4ee..ad0212848a1ab9 100644
> --- a/fs/f2fs/file.c
> +++ b/fs/f2fs/file.c
> @@ -823,7 +823,6 @@ static inline bool f2fs_force_buffered_io(struct inode *inode,
> struct kiocb *iocb, struct iov_iter *iter)
> {
> struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
> - int rw = iov_iter_rw(iter);
>
> if (!fscrypt_dio_supported(inode))
> return true;
> @@ -841,7 +840,7 @@ static inline bool f2fs_force_buffered_io(struct inode *inode,
> */
> if (f2fs_sb_has_blkzoned(sbi))
> return true;
> - if (f2fs_lfs_mode(sbi) && (rw == WRITE)) {
> + if (f2fs_lfs_mode(sbi)) {
> if (block_unaligned_IO(inode, iocb, iter))
> return true;
> if (F2FS_IO_ALIGNED(sbi))
> --
> 2.37.0