]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
f2fs: delete DIO read lock
authorDongDongJu <commisori28@gmail.com>
Fri, 20 Mar 2020 06:01:32 +0000 (15:01 +0900)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 31 Mar 2020 03:46:23 +0000 (20:46 -0700)
This lock can be a contention with multi 4k random read IO with single inode.

example) fio --output=test --name=test --numjobs=60 --filename=/media/samsung960pro/file_test --rw=randread --bs=4k
 --direct=1 --time_based --runtime=7 --ioengine=libaio --iodepth=256 --group_reporting --size=10G

With this commit, it remove that possible lock contention.

Signed-off-by: Dongjoo Seo <commisori28@gmail.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/data.c

index dbde309349d0fec3abf49eda79dc48524525224a..326e6342c578e44012b243aa4fbcc342605f1649 100644 (file)
@@ -3453,7 +3453,8 @@ static ssize_t f2fs_direct_IO(struct kiocb *iocb, struct iov_iter *iter)
        err = __blockdev_direct_IO(iocb, inode, inode->i_sb->s_bdev,
                        iter, rw == WRITE ? get_data_block_dio_write :
                        get_data_block_dio, NULL, f2fs_dio_submit_bio,
-                       DIO_LOCKING | DIO_SKIP_HOLES);
+                       rw == WRITE ? DIO_LOCKING | DIO_SKIP_HOLES :
+                       DIO_SKIP_HOLES);
 
        if (do_opu)
                up_read(&fi->i_gc_rwsem[READ]);