summaryrefslogtreecommitdiffstats
path: root/fs/f2fs
diff options
context:
space:
mode:
authorChao Yu <chao2.yu@samsung.com>2015-07-13 17:43:19 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2015-08-04 14:09:59 -0700
commit5b3391244d1c89bb4c8e1b4e4916fb4965fb71f9 (patch)
tree3257c7eb4b1976b748c9590d7f5dc90deb93dcc7 /fs/f2fs
parentc1c1b58359d45e1a9f236ce5a40d50720c07c70e (diff)
downloadlinux-5b3391244d1c89bb4c8e1b4e4916fb4965fb71f9.tar.gz
linux-5b3391244d1c89bb4c8e1b4e4916fb4965fb71f9.tar.bz2
linux-5b3391244d1c89bb4c8e1b4e4916fb4965fb71f9.zip
f2fs: warm up cold page after mmaped write
With cost-benifit method, background gc will consider old section with fewer valid blocks as candidate victim, these old blocks in section will be treated as cold data, and laterly will be moved into cold segment. But if the gcing page is attached by user through buffered or mmaped write, we should reset the page as non-cold one, because this page may have more opportunity for further updating. So fix to add clearing code for the missed 'mmap' case. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs')
-rw-r--r--fs/f2fs/file.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index dcc01137fca0..9c40f8cfb77c 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -86,6 +86,8 @@ static int f2fs_vm_page_mkwrite(struct vm_area_struct *vma,
mapped:
/* fill the page */
f2fs_wait_on_page_writeback(page, DATA);
+ /* if gced page is attached, don't write to cold segment */
+ clear_cold_data(page);
out:
sb_end_pagefault(inode->i_sb);
return block_page_mkwrite_return(err);