linux/fs/f2fs
Jaegeuk Kim bfad7c2d40 f2fs: introduce a new direct_IO write path
Previously, f2fs doesn't support direct IOs with high performance, which throws
every write requests via the buffered write path, resulting in highly
performance degradation due to memory opeations like copy_from_user.

This patch introduces a new direct IO path in which every write requests are
processed by generic blockdev_direct_IO() with enhanced get_block function.

The get_data_block() in f2fs handles:
1. if original data blocks are allocates, then give them to blockdev.
2. otherwise,
  a. preallocate requested block addresses
  b. do not use extent cache for better performance
  c. give the block addresses to blockdev

This policy induces that:
- new allocated data are sequentially written to the disk
- updated data are randomly written to the disk.
- f2fs gives consistency on its file meta, not file data.

Reviewed-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
2013-12-23 10:18:07 +09:00
..
acl.c f2fs: fix a deadlock during init_acl procedure 2013-10-28 13:39:09 +09:00
acl.h f2fs: fix a deadlock during init_acl procedure 2013-10-28 13:39:09 +09:00
checkpoint.c f2fs: refactor bio->rw handling 2013-12-23 10:18:06 +09:00
data.c f2fs: introduce a new direct_IO write path 2013-12-23 10:18:07 +09:00
debug.c f2fs: replace the debugfs_root with f2fs_debugfs_root 2013-12-23 10:18:05 +09:00
dir.c f2fs: add unlikely() macro for compiler optimization 2013-12-23 10:18:06 +09:00
f2fs.h f2fs: introduce a new direct_IO write path 2013-12-23 10:18:07 +09:00
file.c f2fs: add unlikely() macro for compiler more aggressively 2013-12-23 10:18:06 +09:00
gc.c f2fs: refactor bio->rw handling 2013-12-23 10:18:06 +09:00
gc.h f2fs: optimize gc for better performance 2013-09-05 13:50:32 +09:00
hash.c f2fs: unify string length declarations and usage 2012-12-28 11:27:53 +09:00
inode.c f2fs: add an option to avoid unnecessary BUG_ONs 2013-10-29 15:44:38 +09:00
Kconfig f2fs: introduce CONFIG_F2FS_CHECK_FS for BUG_ON control 2013-10-29 15:43:01 +09:00
Makefile f2fs: update Kconfig and Makefile 2012-12-11 13:43:42 +09:00
namei.c f2fs: fix writing incorrect orphan blocks 2013-10-08 10:19:28 +09:00
node.c f2fs: refactor bio->rw handling 2013-12-23 10:18:06 +09:00
node.h f2fs: fix the use of XATTR_NODE_OFFSET 2013-08-09 14:57:56 +09:00
recovery.c f2fs: add unlikely() macro for compiler more aggressively 2013-12-23 10:18:06 +09:00
segment.c f2fs: introduce a new direct_IO write path 2013-12-23 10:18:07 +09:00
segment.h f2fs: introduce sysfs entry to control in-place-update policy 2013-12-23 10:18:07 +09:00
super.c f2fs: introduce sysfs entry to control in-place-update policy 2013-12-23 10:18:07 +09:00
xattr.c f2fs: add unlikely() macro for compiler more aggressively 2013-12-23 10:18:06 +09:00
xattr.h f2fs: support the inline xattrs 2013-08-26 20:15:23 +09:00