diff options
Diffstat (limited to 'fs/f2fs/debug.c')
-rw-r--r-- | fs/f2fs/debug.c | 53 |
1 files changed, 37 insertions, 16 deletions
diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c index a84b0a8e6854..3de9d20d0c14 100644 --- a/fs/f2fs/debug.c +++ b/fs/f2fs/debug.c | |||
@@ -24,7 +24,7 @@ | |||
24 | #include "gc.h" | 24 | #include "gc.h" |
25 | 25 | ||
26 | static LIST_HEAD(f2fs_stat_list); | 26 | static LIST_HEAD(f2fs_stat_list); |
27 | static struct dentry *debugfs_root; | 27 | static struct dentry *f2fs_debugfs_root; |
28 | static DEFINE_MUTEX(f2fs_stat_mutex); | 28 | static DEFINE_MUTEX(f2fs_stat_mutex); |
29 | 29 | ||
30 | static void update_general_status(struct f2fs_sb_info *sbi) | 30 | static void update_general_status(struct f2fs_sb_info *sbi) |
@@ -45,14 +45,15 @@ static void update_general_status(struct f2fs_sb_info *sbi) | |||
45 | si->valid_count = valid_user_blocks(sbi); | 45 | si->valid_count = valid_user_blocks(sbi); |
46 | si->valid_node_count = valid_node_count(sbi); | 46 | si->valid_node_count = valid_node_count(sbi); |
47 | si->valid_inode_count = valid_inode_count(sbi); | 47 | si->valid_inode_count = valid_inode_count(sbi); |
48 | si->inline_inode = sbi->inline_inode; | ||
48 | si->utilization = utilization(sbi); | 49 | si->utilization = utilization(sbi); |
49 | 50 | ||
50 | si->free_segs = free_segments(sbi); | 51 | si->free_segs = free_segments(sbi); |
51 | si->free_secs = free_sections(sbi); | 52 | si->free_secs = free_sections(sbi); |
52 | si->prefree_count = prefree_segments(sbi); | 53 | si->prefree_count = prefree_segments(sbi); |
53 | si->dirty_count = dirty_segments(sbi); | 54 | si->dirty_count = dirty_segments(sbi); |
54 | si->node_pages = sbi->node_inode->i_mapping->nrpages; | 55 | si->node_pages = NODE_MAPPING(sbi)->nrpages; |
55 | si->meta_pages = sbi->meta_inode->i_mapping->nrpages; | 56 | si->meta_pages = META_MAPPING(sbi)->nrpages; |
56 | si->nats = NM_I(sbi)->nat_cnt; | 57 | si->nats = NM_I(sbi)->nat_cnt; |
57 | si->sits = SIT_I(sbi)->dirty_sentries; | 58 | si->sits = SIT_I(sbi)->dirty_sentries; |
58 | si->fnids = NM_I(sbi)->fcnt; | 59 | si->fnids = NM_I(sbi)->fcnt; |
@@ -165,9 +166,9 @@ get_cache: | |||
165 | /* free nids */ | 166 | /* free nids */ |
166 | si->cache_mem = NM_I(sbi)->fcnt; | 167 | si->cache_mem = NM_I(sbi)->fcnt; |
167 | si->cache_mem += NM_I(sbi)->nat_cnt; | 168 | si->cache_mem += NM_I(sbi)->nat_cnt; |
168 | npages = sbi->node_inode->i_mapping->nrpages; | 169 | npages = NODE_MAPPING(sbi)->nrpages; |
169 | si->cache_mem += npages << PAGE_CACHE_SHIFT; | 170 | si->cache_mem += npages << PAGE_CACHE_SHIFT; |
170 | npages = sbi->meta_inode->i_mapping->nrpages; | 171 | npages = META_MAPPING(sbi)->nrpages; |
171 | si->cache_mem += npages << PAGE_CACHE_SHIFT; | 172 | si->cache_mem += npages << PAGE_CACHE_SHIFT; |
172 | si->cache_mem += sbi->n_orphans * sizeof(struct orphan_inode_entry); | 173 | si->cache_mem += sbi->n_orphans * sizeof(struct orphan_inode_entry); |
173 | si->cache_mem += sbi->n_dirty_dirs * sizeof(struct dir_inode_entry); | 174 | si->cache_mem += sbi->n_dirty_dirs * sizeof(struct dir_inode_entry); |
@@ -200,6 +201,8 @@ static int stat_show(struct seq_file *s, void *v) | |||
200 | seq_printf(s, "Other: %u)\n - Data: %u\n", | 201 | seq_printf(s, "Other: %u)\n - Data: %u\n", |
201 | si->valid_node_count - si->valid_inode_count, | 202 | si->valid_node_count - si->valid_inode_count, |
202 | si->valid_count - si->valid_node_count); | 203 | si->valid_count - si->valid_node_count); |
204 | seq_printf(s, " - Inline_data Inode: %u\n", | ||
205 | si->inline_inode); | ||
203 | seq_printf(s, "\nMain area: %d segs, %d secs %d zones\n", | 206 | seq_printf(s, "\nMain area: %d segs, %d secs %d zones\n", |
204 | si->main_area_segs, si->main_area_sections, | 207 | si->main_area_segs, si->main_area_sections, |
205 | si->main_area_zones); | 208 | si->main_area_zones); |
@@ -242,14 +245,14 @@ static int stat_show(struct seq_file *s, void *v) | |||
242 | seq_printf(s, " - node blocks : %d\n", si->node_blks); | 245 | seq_printf(s, " - node blocks : %d\n", si->node_blks); |
243 | seq_printf(s, "\nExtent Hit Ratio: %d / %d\n", | 246 | seq_printf(s, "\nExtent Hit Ratio: %d / %d\n", |
244 | si->hit_ext, si->total_ext); | 247 | si->hit_ext, si->total_ext); |
245 | seq_printf(s, "\nBalancing F2FS Async:\n"); | 248 | seq_puts(s, "\nBalancing F2FS Async:\n"); |
246 | seq_printf(s, " - nodes %4d in %4d\n", | 249 | seq_printf(s, " - nodes: %4d in %4d\n", |
247 | si->ndirty_node, si->node_pages); | 250 | si->ndirty_node, si->node_pages); |
248 | seq_printf(s, " - dents %4d in dirs:%4d\n", | 251 | seq_printf(s, " - dents: %4d in dirs:%4d\n", |
249 | si->ndirty_dent, si->ndirty_dirs); | 252 | si->ndirty_dent, si->ndirty_dirs); |
250 | seq_printf(s, " - meta %4d in %4d\n", | 253 | seq_printf(s, " - meta: %4d in %4d\n", |
251 | si->ndirty_meta, si->meta_pages); | 254 | si->ndirty_meta, si->meta_pages); |
252 | seq_printf(s, " - NATs %5d > %lu\n", | 255 | seq_printf(s, " - NATs: %5d > %lu\n", |
253 | si->nats, NM_WOUT_THRESHOLD); | 256 | si->nats, NM_WOUT_THRESHOLD); |
254 | seq_printf(s, " - SITs: %5d\n - free_nids: %5d\n", | 257 | seq_printf(s, " - SITs: %5d\n - free_nids: %5d\n", |
255 | si->sits, si->fnids); | 258 | si->sits, si->fnids); |
@@ -340,14 +343,32 @@ void f2fs_destroy_stats(struct f2fs_sb_info *sbi) | |||
340 | 343 | ||
341 | void __init f2fs_create_root_stats(void) | 344 | void __init f2fs_create_root_stats(void) |
342 | { | 345 | { |
343 | debugfs_root = debugfs_create_dir("f2fs", NULL); | 346 | struct dentry *file; |
344 | if (debugfs_root) | 347 | |
345 | debugfs_create_file("status", S_IRUGO, debugfs_root, | 348 | f2fs_debugfs_root = debugfs_create_dir("f2fs", NULL); |
346 | NULL, &stat_fops); | 349 | if (!f2fs_debugfs_root) |
350 | goto bail; | ||
351 | |||
352 | file = debugfs_create_file("status", S_IRUGO, f2fs_debugfs_root, | ||
353 | NULL, &stat_fops); | ||
354 | if (!file) | ||
355 | goto free_debugfs_dir; | ||
356 | |||
357 | return; | ||
358 | |||
359 | free_debugfs_dir: | ||
360 | debugfs_remove(f2fs_debugfs_root); | ||
361 | |||
362 | bail: | ||
363 | f2fs_debugfs_root = NULL; | ||
364 | return; | ||
347 | } | 365 | } |
348 | 366 | ||
349 | void f2fs_destroy_root_stats(void) | 367 | void f2fs_destroy_root_stats(void) |
350 | { | 368 | { |
351 | debugfs_remove_recursive(debugfs_root); | 369 | if (!f2fs_debugfs_root) |
352 | debugfs_root = NULL; | 370 | return; |
371 | |||
372 | debugfs_remove_recursive(f2fs_debugfs_root); | ||
373 | f2fs_debugfs_root = NULL; | ||
353 | } | 374 | } |