f2fs: export dirty_nats_ratio in sysfs
PATCH v2 4/4 f2fs: export dirty_nats_ratio in sysfs
This patch exports a new sysfs entry 'dirty_nat_ratio' to control threshold of dirty nat entries, if current ratio exceeds configured threshold, checkpoint will be triggered in f2fs_balance_fs_bg for flushing dirty nats.
Signed-off-by Chao Yu <[email protected]>
---Documentation/ABI/testing/sysfs-fs-f2fs | 8 ++++++++
fs/f2fs/f2fs.h | 1 + fs/f2fs/node.c | 1 + fs/f2fs/node.h | 2 +- fs/f2fs/super.c | 2 ++ 5 files changed, 13 insertions(+), 1 deletion(-)
Documentation/ABI/testing/sysfs-fs-f2fs +8 -0
@@ -98,3 +98,11 @@ Date: October 2015 Contact: "Chao Yu" <[email protected]> Description: Controls the count of nid pages to be readaheaded. + +What: /sys/fs/f2fs/<disk>/dirty_nats_ratio +Date: January 2016 +Contact: "Chao Yu" <[email protected]> +Description: + Controls dirty nat entries ratio threshold, if current + ratio exceeds configured threshold, checkpoint will + be triggered for flushing dirty nat entries.
fs/f2fs/f2fs.h +1 -0
@@ -515,6 +515,7 @@ struct f2fs_nm_info {nid_t next_scan_nid;/* the next nid to be scanned */ unsigned int ram_thresh;/* control the memory footprint */ unsigned int ra_nid_pages;/* # of nid pages to be readaheaded */ +unsigned int dirty_nats_ratio;/* control dirty nats ratio threshold */ /* NAT cache management */ struct radix_tree_root nat_root;/* root of the nat entry cache */
fs/f2fs/node.c +1 -0
@@ -2009,6 +2009,7 @@ static int init_node_manager(struct f2fs_sb_info *sbi) nm_i->nat_cnt =0 ; nm_i->ram_thresh =DEF_RAM_THRESHOLD ; nm_i->ra_nid_pages =DEF_RA_NID_PAGES ; + nm_i->dirty_nats_ratio =DEF_DIRTY_NAT_RATIO_THRESHOLD ;INIT_RADIX_TREE (&nm_i->free_nid_root,GFP_ATOMIC );INIT_LIST_HEAD (&nm_i->free_nid_list);
fs/f2fs/node.h +1 -1
@@ -123,7 +123,7 @@ static inline void raw_nat_from_node_info(struct f2fs_nat_entry *raw_ne,static inline bool excess_dirty_nats (struct f2fs_sb_info *sbi) {return NM_I (sbi)->dirty_nat_cnt >=NM_I (sbi)->max_nid * -DEF_DIRTY_NAT_RATIO_THRESHOLD /100 ; +NM_I (sbi)->dirty_nats_ratio /100 ; }enum mem_type {
fs/f2fs/super.c +2 -0
@@ -216,6 +216,7 @@ F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, min_ipu_util, min_ipu_util);F2FS_RW_ATTR (SM_INFO , f2fs_sm_info, min_fsync_blocks, min_fsync_blocks);F2FS_RW_ATTR (NM_INFO , f2fs_nm_info, ram_thresh, ram_thresh);F2FS_RW_ATTR (NM_INFO , f2fs_nm_info, ra_nid_pages, ra_nid_pages); +F2FS_RW_ATTR (NM_INFO , f2fs_nm_info, dirty_nats_ratio, dirty_nats_ratio);F2FS_RW_ATTR (F2FS_SBI , f2fs_sb_info, max_victim_search, max_victim_search);F2FS_RW_ATTR (F2FS_SBI , f2fs_sb_info, dir_level, dir_level);F2FS_RW_ATTR (F2FS_SBI , f2fs_sb_info, cp_interval, interval_time[CP_TIME ]);
@@ -237,6 +238,7 @@ static struct attribute *f2fs_attrs[] = {ATTR_LIST (dir_level),ATTR_LIST (ram_thresh),ATTR_LIST (ra_nid_pages), +ATTR_LIST (dirty_nats_ratio),ATTR_LIST (cp_interval),ATTR_LIST (idle_interval), NULL,
Signature · 1 line
2.6.3