summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChao Yu <yuchao0@huawei.com>2018-04-26 17:05:50 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2018-05-31 11:31:49 -0700
commitb4c3ca8ba9a447ea5d1b3dd1082f112c8dda3562 (patch)
tree73309edfcc8c5e7ccb460dc5faefb1cc3b4a679e
parentaf8ff65bb85df39159944811a241f0dd827f0d76 (diff)
downloadlinux-b4c3ca8ba9a447ea5d1b3dd1082f112c8dda3562.tar.gz
linux-b4c3ca8ba9a447ea5d1b3dd1082f112c8dda3562.tar.bz2
linux-b4c3ca8ba9a447ea5d1b3dd1082f112c8dda3562.zip
f2fs: treat volatile file's data as hot one
Volatile file's data will be updated oftenly, so it'd better to place its data into hot data segment. In addition, for atomic file, we change to check FI_ATOMIC_FILE instead of FI_HOT_DATA to make code readability better. Signed-off-by: Chao Yu <yuchao0@huawei.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--fs/f2fs/file.c2
-rw-r--r--fs/f2fs/segment.c5
2 files changed, 3 insertions, 4 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index 8af352c3239d..26b32108b09b 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -1696,7 +1696,6 @@ static int f2fs_ioc_start_atomic_write(struct file *filp)
if (ret)
goto out;
skip_flush:
- set_inode_flag(inode, FI_HOT_DATA);
set_inode_flag(inode, FI_ATOMIC_FILE);
f2fs_update_time(F2FS_I_SB(inode), REQ_TIME);
@@ -1739,7 +1738,6 @@ static int f2fs_ioc_commit_atomic_write(struct file *filp)
ret = f2fs_do_sync_file(filp, 0, LLONG_MAX, 0, true);
if (!ret) {
clear_inode_flag(inode, FI_ATOMIC_FILE);
- clear_inode_flag(inode, FI_HOT_DATA);
stat_dec_atomic_write(inode);
}
} else {
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 916b16e768fb..9937265a63c5 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -309,7 +309,6 @@ void drop_inmem_pages(struct inode *inode)
mutex_unlock(&fi->inmem_lock);
clear_inode_flag(inode, FI_ATOMIC_FILE);
- clear_inode_flag(inode, FI_HOT_DATA);
stat_dec_atomic_write(inode);
}
@@ -2613,7 +2612,9 @@ static int __get_segment_type_6(struct f2fs_io_info *fio)
if (is_cold_data(fio->page) || file_is_cold(inode))
return CURSEG_COLD_DATA;
if (file_is_hot(inode) ||
- is_inode_flag_set(inode, FI_HOT_DATA))
+ is_inode_flag_set(inode, FI_HOT_DATA) ||
+ is_inode_flag_set(inode, FI_ATOMIC_FILE) ||
+ is_inode_flag_set(inode, FI_VOLATILE_FILE))
return CURSEG_HOT_DATA;
return rw_hint_to_seg_type(inode->i_write_hint);
} else {