linux/fs/f2fs
Chao Yu 8f46dcaea8 f2fs: expose f2fs_write_cache_pages
If there are gced dirty pages and normal dirty pages in the mapping
of one inode, we might writeback them alternately with discontinuous
block address, resulting in low performance.

This patch introduces f2fs_write_cache_pages with codes copied from
write_cache_pages in mm/page-writeback.c.

In this function, we refactor flow with two steps:
1) writeback all cold type pages.
2) writeback all non-cold type pages.

By using this method, f2fs will writeback dirty pages with the same
temperature in bunch mode, it makes writeouted block being with
more continuous address, so they can be merged as much as possible
in f2fs bio cache, and also it will reduce the chance of submiting
small IO from block layer.

Test environment: 8g nokia sd card (very old sd card, but it shows
better effect when testing with this patch, and with a 32g kingston
sd card, I didn't see much more improvement).

Test step:
1. touch testfile;
2. truncate -s 512K testfile;
3. write all pages with odd index;
4. trigger gc by ioctl;
5. write all pages with even index;
6. time fsync testfile.

before:
real	0m0.402s
user	0m0.000s
sys	0m0.000s

after:
real	0m0.143s
user	0m0.004s
sys	0m0.004s

Signed-off-by: Chao Yu <chao2.yu@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
2015-08-04 14:09:59 -07:00
..
acl.c f2fs: make posix_acl_create() safer and cleaner 2015-05-07 11:38:31 -07:00
acl.h f2fs: avoid deadlock on init_inode_metadata 2014-11-03 16:07:33 -08:00
checkpoint.c f2fs: cleanup write_orphan_inodes 2015-08-04 14:09:59 -07:00
crypto_fname.c f2fs crypto: clean up error handling in f2fs_fname_setup_filename 2015-06-01 16:21:08 -07:00
crypto_key.c f2fs crypto: delete an unnecessary check before the function call "key_put" 2015-08-04 14:09:52 -07:00
crypto_policy.c f2fs crypto: do not set encryption policy for non-directory by ioctl 2015-06-01 16:21:07 -07:00
crypto.c f2fs crypto: add alloc_bounce_page 2015-06-11 15:04:20 -07:00
data.c f2fs: expose f2fs_write_cache_pages 2015-08-04 14:09:59 -07:00
debug.c f2fs: fix building on 32-bit architectures 2015-06-01 16:20:53 -07:00
dir.c f2fs crypto: use per-inode tfm structure 2015-06-01 16:21:04 -07:00
extent_cache.c f2fs: maintain extent cache in separated file 2015-08-04 14:09:58 -07:00
f2fs_crypto.h f2fs crypto: remove alloc_page for bounce_page 2015-06-01 16:21:10 -07:00
f2fs.h f2fs: add new ioctl F2FS_IOC_GARBAGE_COLLECT 2015-08-04 14:09:58 -07:00
file.c f2fs: warm up cold page after mmaped write 2015-08-04 14:09:59 -07:00
gc.c f2fs: make the function check_dnode have a return type of bool and change it's name to is_alive 2015-08-04 14:09:56 -07:00
gc.h f2fs: add new ioctl F2FS_IOC_GARBAGE_COLLECT 2015-08-04 14:09:58 -07:00
hash.c f2fs: introduce dot and dotdot name check 2015-05-28 15:41:34 -07:00
inline.c f2fs: call set_page_dirty to attach i_wb for cgroup 2015-07-25 08:54:26 -07:00
inode.c f2fs: use extent_cache by default 2015-08-04 14:09:56 -07:00
Kconfig f2fs crypto: add f2fs encryption Kconfig 2015-05-28 15:41:46 -07:00
Makefile f2fs: maintain extent cache in separated file 2015-08-04 14:09:58 -07:00
namei.c f2fs: restrict multimedia filename 2015-08-04 14:09:57 -07:00
node.c f2fs: shrink nat_cache entries 2015-08-04 14:09:55 -07:00
node.h f2fs: move existing definitions into f2fs.h 2015-05-28 15:41:27 -07:00
recovery.c f2fs: hide common code in f2fs_replace_block 2015-06-02 09:52:07 -07:00
segment.c f2fs: shrink extent_cache entries 2015-08-04 14:09:55 -07:00
segment.h Merge branch 'for-4.2/writeback' of git://git.kernel.dk/linux-block 2015-06-25 16:00:17 -07:00
shrinker.c f2fs: use extent_cache by default 2015-08-04 14:09:56 -07:00
super.c f2fs: use extent_cache by default 2015-08-04 14:09:56 -07:00
trace.c f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
trace.h f2fs: add sbi and page pointer in f2fs_io_info 2015-05-28 15:41:32 -07:00
xattr.c f2fs: correct return value of ->setxattr 2015-08-04 14:09:59 -07:00
xattr.h f2fs crypto: add encryption xattr support 2015-05-28 15:41:47 -07:00