diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-12-05 20:18:15 -0500 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-12-08 13:35:15 -0500 |
commit | 8dcf2ff72120707f960d9b3b15ce6e50705b13a6 (patch) | |
tree | bfc57918d72b70aeae3f7d6b79de8a06e20ed772 /fs/f2fs | |
parent | 126622343a8488917c5e0891eae1bc936a63f49a (diff) |
f2fs: count the number of inmemory pages
This patch adds counting # of inmemory pages in the page cache.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs')
-rw-r--r-- | fs/f2fs/debug.c | 3 | ||||
-rw-r--r-- | fs/f2fs/f2fs.h | 3 | ||||
-rw-r--r-- | fs/f2fs/segment.c | 3 |
3 files changed, 8 insertions, 1 deletions
diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c index 40b679ce35d9..4e2e39c0ba69 100644 --- a/fs/f2fs/debug.c +++ b/fs/f2fs/debug.c | |||
@@ -39,6 +39,7 @@ static void update_general_status(struct f2fs_sb_info *sbi) | |||
39 | si->ndirty_dent = get_pages(sbi, F2FS_DIRTY_DENTS); | 39 | si->ndirty_dent = get_pages(sbi, F2FS_DIRTY_DENTS); |
40 | si->ndirty_dirs = sbi->n_dirty_dirs; | 40 | si->ndirty_dirs = sbi->n_dirty_dirs; |
41 | si->ndirty_meta = get_pages(sbi, F2FS_DIRTY_META); | 41 | si->ndirty_meta = get_pages(sbi, F2FS_DIRTY_META); |
42 | si->inmem_pages = get_pages(sbi, F2FS_INMEM_PAGES); | ||
42 | si->total_count = (int)sbi->user_block_count / sbi->blocks_per_seg; | 43 | si->total_count = (int)sbi->user_block_count / sbi->blocks_per_seg; |
43 | si->rsvd_segs = reserved_segments(sbi); | 44 | si->rsvd_segs = reserved_segments(sbi); |
44 | si->overp_segs = overprovision_segments(sbi); | 45 | si->overp_segs = overprovision_segments(sbi); |
@@ -249,6 +250,8 @@ static int stat_show(struct seq_file *s, void *v) | |||
249 | seq_printf(s, "\nExtent Hit Ratio: %d / %d\n", | 250 | seq_printf(s, "\nExtent Hit Ratio: %d / %d\n", |
250 | si->hit_ext, si->total_ext); | 251 | si->hit_ext, si->total_ext); |
251 | seq_puts(s, "\nBalancing F2FS Async:\n"); | 252 | seq_puts(s, "\nBalancing F2FS Async:\n"); |
253 | seq_printf(s, " - inmem: %4d\n", | ||
254 | si->inmem_pages); | ||
252 | seq_printf(s, " - nodes: %4d in %4d\n", | 255 | seq_printf(s, " - nodes: %4d in %4d\n", |
253 | si->ndirty_node, si->node_pages); | 256 | si->ndirty_node, si->node_pages); |
254 | seq_printf(s, " - dents: %4d in dirs:%4d\n", | 257 | seq_printf(s, " - dents: %4d in dirs:%4d\n", |
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index c787fe302918..f60b817a7f0d 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h | |||
@@ -462,6 +462,7 @@ enum count_type { | |||
462 | F2FS_DIRTY_DENTS, | 462 | F2FS_DIRTY_DENTS, |
463 | F2FS_DIRTY_NODES, | 463 | F2FS_DIRTY_NODES, |
464 | F2FS_DIRTY_META, | 464 | F2FS_DIRTY_META, |
465 | F2FS_INMEM_PAGES, | ||
465 | NR_COUNT_TYPE, | 466 | NR_COUNT_TYPE, |
466 | }; | 467 | }; |
467 | 468 | ||
@@ -1498,7 +1499,7 @@ struct f2fs_stat_info { | |||
1498 | int ndirty_node, ndirty_dent, ndirty_dirs, ndirty_meta; | 1499 | int ndirty_node, ndirty_dent, ndirty_dirs, ndirty_meta; |
1499 | int nats, sits, fnids; | 1500 | int nats, sits, fnids; |
1500 | int total_count, utilization; | 1501 | int total_count, utilization; |
1501 | int bg_gc, inline_inode, inline_dir; | 1502 | int bg_gc, inline_inode, inline_dir, inmem_pages; |
1502 | unsigned int valid_count, valid_node_count, valid_inode_count; | 1503 | unsigned int valid_count, valid_node_count, valid_inode_count; |
1503 | unsigned int bimodal, avg_vblocks; | 1504 | unsigned int bimodal, avg_vblocks; |
1504 | int util_free, util_valid, util_invalid; | 1505 | int util_free, util_valid, util_invalid; |
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index 3ebcf96bc5f3..42607a679923 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c | |||
@@ -201,6 +201,7 @@ retry: | |||
201 | } | 201 | } |
202 | get_page(page); | 202 | get_page(page); |
203 | list_add_tail(&new->list, &fi->inmem_pages); | 203 | list_add_tail(&new->list, &fi->inmem_pages); |
204 | inc_page_count(F2FS_I_SB(inode), F2FS_INMEM_PAGES); | ||
204 | mutex_unlock(&fi->inmem_lock); | 205 | mutex_unlock(&fi->inmem_lock); |
205 | } | 206 | } |
206 | 207 | ||
@@ -216,6 +217,7 @@ void invalidate_inmem_page(struct inode *inode, struct page *page) | |||
216 | f2fs_put_page(cur->page, 0); | 217 | f2fs_put_page(cur->page, 0); |
217 | list_del(&cur->list); | 218 | list_del(&cur->list); |
218 | kmem_cache_free(inmem_entry_slab, cur); | 219 | kmem_cache_free(inmem_entry_slab, cur); |
220 | dec_page_count(F2FS_I_SB(inode), F2FS_INMEM_PAGES); | ||
219 | } | 221 | } |
220 | mutex_unlock(&fi->inmem_lock); | 222 | mutex_unlock(&fi->inmem_lock); |
221 | } | 223 | } |
@@ -257,6 +259,7 @@ void commit_inmem_pages(struct inode *inode, bool abort) | |||
257 | f2fs_put_page(cur->page, 1); | 259 | f2fs_put_page(cur->page, 1); |
258 | list_del(&cur->list); | 260 | list_del(&cur->list); |
259 | kmem_cache_free(inmem_entry_slab, cur); | 261 | kmem_cache_free(inmem_entry_slab, cur); |
262 | dec_page_count(F2FS_I_SB(inode), F2FS_INMEM_PAGES); | ||
260 | } | 263 | } |
261 | if (submit_bio) | 264 | if (submit_bio) |
262 | f2fs_submit_merged_bio(sbi, DATA, WRITE); | 265 | f2fs_submit_merged_bio(sbi, DATA, WRITE); |