aboutsummaryrefslogtreecommitdiffstats
path: root/fs/f2fs/debug.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-04-18 11:17:20 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-18 11:17:20 -0400
commit06a60deca87dba8e2c186ea7f12ea87d6785188e (patch)
tree2a6c8de6a7b110d13a1c1e3fc07cdc9065dfd749 /fs/f2fs/debug.c
parentd6a24d0640d609138a4e40a4ce9fd9fe7859e24c (diff)
parent10027551ccf5459cc771c31ac8bc8e5cc8db45f8 (diff)
Merge tag 'for-f2fs-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs
Pull f2fs updates from Jaegeuk Kim: "New features: - in-memory extent_cache - fs_shutdown to test power-off-recovery - use inline_data to store symlink path - show f2fs as a non-misc filesystem Major fixes: - avoid CPU stalls on sync_dirty_dir_inodes - fix some power-off-recovery procedure - fix handling of broken symlink correctly - fix missing dot and dotdot made by sudden power cuts - handle wrong data index during roll-forward recovery - preallocate data blocks for direct_io ... and a bunch of minor bug fixes and cleanups" * tag 'for-f2fs-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (71 commits) f2fs: pass checkpoint reason on roll-forward recovery f2fs: avoid abnormal behavior on broken symlink f2fs: flush symlink path to avoid broken symlink after POR f2fs: change 0 to false for bool type f2fs: do not recover wrong data index f2fs: do not increase link count during recovery f2fs: assign parent's i_mode for empty dir f2fs: add F2FS_INLINE_DOTS to recover missing dot dentries f2fs: fix mismatching lock and unlock pages for roll-forward recovery f2fs: fix sparse warnings f2fs: limit b_size of mapped bh in f2fs_map_bh f2fs: persist system.advise into on-disk inode f2fs: avoid NULL pointer dereference in f2fs_xattr_advise_get f2fs: preallocate fallocated blocks for direct IO f2fs: enable inline data by default f2fs: preserve extent info for extent cache f2fs: initialize extent tree with on-disk extent info of inode f2fs: introduce __{find,grab}_extent_tree f2fs: split set_data_blkaddr from f2fs_update_extent_cache f2fs: enable fast symlink by utilizing inline data ...
Diffstat (limited to 'fs/f2fs/debug.c')
-rw-r--r--fs/f2fs/debug.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c
index e671373cc8ab..f5388f37217e 100644
--- a/fs/f2fs/debug.c
+++ b/fs/f2fs/debug.c
@@ -35,6 +35,8 @@ static void update_general_status(struct f2fs_sb_info *sbi)
35 /* validation check of the segment numbers */ 35 /* validation check of the segment numbers */
36 si->hit_ext = sbi->read_hit_ext; 36 si->hit_ext = sbi->read_hit_ext;
37 si->total_ext = sbi->total_hit_ext; 37 si->total_ext = sbi->total_hit_ext;
38 si->ext_tree = sbi->total_ext_tree;
39 si->ext_node = atomic_read(&sbi->total_ext_node);
38 si->ndirty_node = get_pages(sbi, F2FS_DIRTY_NODES); 40 si->ndirty_node = get_pages(sbi, F2FS_DIRTY_NODES);
39 si->ndirty_dent = get_pages(sbi, F2FS_DIRTY_DENTS); 41 si->ndirty_dent = get_pages(sbi, F2FS_DIRTY_DENTS);
40 si->ndirty_dirs = sbi->n_dirty_dirs; 42 si->ndirty_dirs = sbi->n_dirty_dirs;
@@ -185,6 +187,9 @@ get_cache:
185 si->cache_mem += sbi->n_dirty_dirs * sizeof(struct inode_entry); 187 si->cache_mem += sbi->n_dirty_dirs * sizeof(struct inode_entry);
186 for (i = 0; i <= UPDATE_INO; i++) 188 for (i = 0; i <= UPDATE_INO; i++)
187 si->cache_mem += sbi->im[i].ino_num * sizeof(struct ino_entry); 189 si->cache_mem += sbi->im[i].ino_num * sizeof(struct ino_entry);
190 si->cache_mem += sbi->total_ext_tree * sizeof(struct extent_tree);
191 si->cache_mem += atomic_read(&sbi->total_ext_node) *
192 sizeof(struct extent_node);
188 193
189 si->page_mem = 0; 194 si->page_mem = 0;
190 npages = NODE_MAPPING(sbi)->nrpages; 195 npages = NODE_MAPPING(sbi)->nrpages;
@@ -260,13 +265,20 @@ static int stat_show(struct seq_file *s, void *v)
260 seq_printf(s, "CP calls: %d\n", si->cp_count); 265 seq_printf(s, "CP calls: %d\n", si->cp_count);
261 seq_printf(s, "GC calls: %d (BG: %d)\n", 266 seq_printf(s, "GC calls: %d (BG: %d)\n",
262 si->call_count, si->bg_gc); 267 si->call_count, si->bg_gc);
263 seq_printf(s, " - data segments : %d\n", si->data_segs); 268 seq_printf(s, " - data segments : %d (%d)\n",
264 seq_printf(s, " - node segments : %d\n", si->node_segs); 269 si->data_segs, si->bg_data_segs);
265 seq_printf(s, "Try to move %d blocks\n", si->tot_blks); 270 seq_printf(s, " - node segments : %d (%d)\n",
266 seq_printf(s, " - data blocks : %d\n", si->data_blks); 271 si->node_segs, si->bg_node_segs);
267 seq_printf(s, " - node blocks : %d\n", si->node_blks); 272 seq_printf(s, "Try to move %d blocks (BG: %d)\n", si->tot_blks,
273 si->bg_data_blks + si->bg_node_blks);
274 seq_printf(s, " - data blocks : %d (%d)\n", si->data_blks,
275 si->bg_data_blks);
276 seq_printf(s, " - node blocks : %d (%d)\n", si->node_blks,
277 si->bg_node_blks);
268 seq_printf(s, "\nExtent Hit Ratio: %d / %d\n", 278 seq_printf(s, "\nExtent Hit Ratio: %d / %d\n",
269 si->hit_ext, si->total_ext); 279 si->hit_ext, si->total_ext);
280 seq_printf(s, "\nExtent Tree Count: %d\n", si->ext_tree);
281 seq_printf(s, "\nExtent Node Count: %d\n", si->ext_node);
270 seq_puts(s, "\nBalancing F2FS Async:\n"); 282 seq_puts(s, "\nBalancing F2FS Async:\n");
271 seq_printf(s, " - inmem: %4d, wb: %4d\n", 283 seq_printf(s, " - inmem: %4d, wb: %4d\n",
272 si->inmem_pages, si->wb_pages); 284 si->inmem_pages, si->wb_pages);