Re: [PATCH V2] exfat: fdatasync flag should be same like generic_write_sync()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> Test: androbench by default setting, use 64GB sdcard.
>  the random write speed:
>         without this patch 3.5MB/s
>         with this patch 7MB/s
> 
> After patch "11a347fb6cef", the random write speed decreased significantly.
> the .write_iter() interface had been modified, and check the differences with
> generic_file_write_iter(), when calling generic_write_sync() and
> exfat_file_write_iter() to call vfs_fsync_range(), the fdatasync flag is wrong,
> and make not use the fdatasync mode, and make random write speed decreased.
> 
> So use generic_write_sync() instead of vfs_fsync_range().
> 
> Fixes: 11a347fb6cef ("exfat: change to get file size from DataLength")
> 
> Signed-off-by: Zhengxu Zhang <zhengxu.zhang@xxxxxxxxxx>
> ---
>  fs/exfat/file.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/exfat/file.c b/fs/exfat/file.c
> index 841a5b18e3df..7ac5126aa4f1 100644
> --- a/fs/exfat/file.c
> +++ b/fs/exfat/file.c
> @@ -623,9 +623,8 @@ static ssize_t exfat_file_write_iter(struct kiocb *iocb, struct iov_iter *iter)
>         if (pos > valid_size)
>                 pos = valid_size;
> 
> -       if (iocb_is_dsync(iocb) && iocb->ki_pos > pos) {
> -               ssize_t err = vfs_fsync_range(file, pos, iocb->ki_pos - 1,
> -                               iocb->ki_flags & IOCB_SYNC);
> +       if (iocb->ki_pos > pos) {
> +               ssize_t err = generic_write_sync(iocb, iocb->ki_pos - pos);
>                 if (err < 0)
>                         return err;
>         }

It's good to me.
Acked-by: Yuezhang Mo <Yuezhang.Mo@xxxxxxxx>




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux