f2fs: flush dirty nats periodically
Subsystems (2)
Jaegeuk Kim
maintainerPATCH 1/2 f2fs: flush dirty nats periodically
This patch flushes dirty nats in order to acquire available nids by writing checkpoint. Otherwise, we can have no chance to get freed nids.
Signed-off-by Jaegeuk Kim <[email protected]>
--- fs/f2fs/segment.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/f2fs/segment.c +1 -1
@@ -419,7 +419,7 @@ void f2fs_balance_fs_bg(struct f2fs_sb_info *sbi)else build_free_nids (sbi, false, false); -if (!is_idle (sbi)) +if (!is_idle (sbi) && !excess_dirty_nats (sbi))return ;/* checkpoint is the only way to shrink partial cached entries */
Signature · 1 line
2.11.0
Jaegeuk Kim
maintainerPATCH 2/2 f2fs: show available_nids in f2fs/status
This patch adds an entry in f2fs/status to show # of available nids.
Signed-off-by Jaegeuk Kim <[email protected]>
--- fs/f2fs/debug.c | 5 +++-- fs/f2fs/f2fs.h | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-)
fs/f2fs/debug.c +3 -2
@@ -97,6 +97,7 @@ static void update_general_status(struct f2fs_sb_info *sbi) si->sits =MAIN_SEGS (sbi); si->dirty_sits =SIT_I (sbi)->dirty_sentries; si->free_nids =NM_I (sbi)->nid_cnt[FREE_NID_LIST ]; + si->avail_nids =NM_I (sbi)->available_nids; si->alloc_nids =NM_I (sbi)->nid_cnt[ALLOC_NID_LIST ]; si->bg_gc = sbi->bg_gc; si->util_free = (int )(free_user_blocks (sbi) >> sbi->log_blocks_per_seg)
@@ -370,8 +371,8 @@ static int stat_show(struct seq_file *s, void *v) si->ndirty_imeta);seq_printf (s," - NATs: %9d/%9d\n - SITs: %9d/%9d\n" , si->dirty_nats, si->nats, si->dirty_sits, si->sits); -seq_printf (s," - free_nids: %9d, alloc_nids: %9d\n" , - si->free_nids, si->alloc_nids); +seq_printf (s," - free_nids: %9d/%9d\n - alloc_nids: %9d\n" , + si->free_nids, si->avail_nids, si->alloc_nids);seq_puts (s,"\nDistribution of User Blocks:" );seq_puts (s," [ valid | invalid | free ]\n" );seq_puts (s," [" );
fs/f2fs/f2fs.h +2 -1
@@ -2395,7 +2395,8 @@ struct f2fs_stat_info {int ndirty_node, ndirty_dent, ndirty_meta, ndirty_data, ndirty_imeta;int inmem_pages;unsigned int ndirty_dirs, ndirty_files, ndirty_all; -int nats, dirty_nats, sits, dirty_sits, free_nids, alloc_nids; +int nats, dirty_nats, sits, dirty_sits; +int free_nids, avail_nids, alloc_nids;int total_count, utilization;int bg_gc, nr_wb_cp_data, nr_wb_data;int nr_flushing, nr_flushed, nr_discarding, nr_discarded;
Signature · 1 line
2.11.0