linux/fs/f2fs
Chao Yu f847c699cf f2fs: allow out-place-update for direct IO in LFS mode
Normally, DIO uses in-pllace-update, but in LFS mode, f2fs doesn't
allow triggering any in-place-update writes, so we fallback direct
write to buffered write, result in bad performance of large size
write.

This patch adds to support triggering out-place-update for direct IO
to enhance its performance.

Note that it needs to exclude direct read IO during direct write,
since new data writing to new block address will no be valid until
write finished.

storage: zram

time xfs_io -f -d /mnt/f2fs/file -c "pwrite 0 1073741824" -c "fsync"

Before:
real	0m13.061s
user	0m0.327s
sys	0m12.486s

After:
real	0m6.448s
user	0m0.228s
sys	0m6.212s

Signed-off-by: Chao Yu <yuchao0@huawei.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2018-09-30 18:42:50 -07:00
..
acl.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
acl.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
checkpoint.c Revert: "f2fs: check last page index in cached bio to decide submission" 2018-09-30 18:39:54 -07:00
data.c f2fs: allow out-place-update for direct IO in LFS mode 2018-09-30 18:42:50 -07:00
debug.c f2fs: add to account skip count of background GC 2018-09-30 18:33:34 -07:00
dir.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
extent_cache.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
f2fs.h f2fs: allow out-place-update for direct IO in LFS mode 2018-09-30 18:42:50 -07:00
file.c f2fs: allow out-place-update for direct IO in LFS mode 2018-09-30 18:42:50 -07:00
gc.c f2fs: add to account skip count of background GC 2018-09-30 18:33:34 -07:00
gc.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
hash.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
inline.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
inode.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
Kconfig fs/*/Kconfig: drop links to 404-compliant http://acl.bestbits.at 2018-01-01 12:45:37 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
namei.c f2fs: report ENOENT correctly in f2fs_rename 2018-09-26 12:38:11 -07:00
node.c Revert: "f2fs: check last page index in cached bio to decide submission" 2018-09-30 18:39:54 -07:00
node.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
recovery.c f2fs: avoid f2fs_bug_on if f2fs_get_meta_page_nofail got EIO 2018-09-28 10:39:58 -07:00
segment.c Revert: "f2fs: check last page index in cached bio to decide submission" 2018-09-30 18:39:54 -07:00
segment.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
shrinker.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
super.c f2fs: support superblock checksum 2018-09-30 18:34:18 -07:00
sysfs.c f2fs: support superblock checksum 2018-09-30 18:34:18 -07:00
trace.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
trace.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
xattr.c f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00
xattr.h f2fs: add SPDX license identifiers 2018-09-12 13:07:10 -07:00