debug.c (c829a33253e018472335b02e6d8bb1bb4213a142) debug.c (8b8dd65f72ccbf7111eb97c4c4f5b5df2a412a07)
1/*
2 * f2fs debugging statistics
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com/
6 * Copyright (c) 2012 Linux Foundation
7 * Copyright (c) 2012 Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 *

--- 37 unchanged lines hidden (view full) ---

46 si->ndirty_meta = get_pages(sbi, F2FS_DIRTY_META);
47 si->ndirty_data = get_pages(sbi, F2FS_DIRTY_DATA);
48 si->ndirty_imeta = get_pages(sbi, F2FS_DIRTY_IMETA);
49 si->ndirty_dirs = sbi->ndirty_inode[DIR_INODE];
50 si->ndirty_files = sbi->ndirty_inode[FILE_INODE];
51 si->ndirty_all = sbi->ndirty_inode[DIRTY_META];
52 si->inmem_pages = get_pages(sbi, F2FS_INMEM_PAGES);
53 si->aw_cnt = atomic_read(&sbi->aw_cnt);
1/*
2 * f2fs debugging statistics
3 *
4 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * http://www.samsung.com/
6 * Copyright (c) 2012 Linux Foundation
7 * Copyright (c) 2012 Greg Kroah-Hartman <gregkh@linuxfoundation.org>
8 *

--- 37 unchanged lines hidden (view full) ---

46 si->ndirty_meta = get_pages(sbi, F2FS_DIRTY_META);
47 si->ndirty_data = get_pages(sbi, F2FS_DIRTY_DATA);
48 si->ndirty_imeta = get_pages(sbi, F2FS_DIRTY_IMETA);
49 si->ndirty_dirs = sbi->ndirty_inode[DIR_INODE];
50 si->ndirty_files = sbi->ndirty_inode[FILE_INODE];
51 si->ndirty_all = sbi->ndirty_inode[DIRTY_META];
52 si->inmem_pages = get_pages(sbi, F2FS_INMEM_PAGES);
53 si->aw_cnt = atomic_read(&sbi->aw_cnt);
54 si->vw_cnt = atomic_read(&sbi->vw_cnt);
54 si->max_aw_cnt = atomic_read(&sbi->max_aw_cnt);
55 si->max_aw_cnt = atomic_read(&sbi->max_aw_cnt);
56 si->max_vw_cnt = atomic_read(&sbi->max_vw_cnt);
55 si->nr_wb_cp_data = get_pages(sbi, F2FS_WB_CP_DATA);
56 si->nr_wb_data = get_pages(sbi, F2FS_WB_DATA);
57 si->nr_wb_cp_data = get_pages(sbi, F2FS_WB_CP_DATA);
58 si->nr_wb_data = get_pages(sbi, F2FS_WB_DATA);
57 if (SM_I(sbi) && SM_I(sbi)->fcc_info)
58 si->nr_flush =
59 atomic_read(&SM_I(sbi)->fcc_info->submit_flush);
60 if (SM_I(sbi) && SM_I(sbi)->dcc_info)
61 si->nr_discard =
62 atomic_read(&SM_I(sbi)->dcc_info->submit_discard);
59 if (SM_I(sbi) && SM_I(sbi)->fcc_info) {
60 si->nr_flushed =
61 atomic_read(&SM_I(sbi)->fcc_info->issued_flush);
62 si->nr_flushing =
63 atomic_read(&SM_I(sbi)->fcc_info->issing_flush);
64 }
65 if (SM_I(sbi) && SM_I(sbi)->dcc_info) {
66 si->nr_discarded =
67 atomic_read(&SM_I(sbi)->dcc_info->issued_discard);
68 si->nr_discarding =
69 atomic_read(&SM_I(sbi)->dcc_info->issing_discard);
70 }
63 si->total_count = (int)sbi->user_block_count / sbi->blocks_per_seg;
64 si->rsvd_segs = reserved_segments(sbi);
65 si->overp_segs = overprovision_segments(sbi);
66 si->valid_count = valid_user_blocks(sbi);
67 si->discard_blks = discard_blocks(sbi);
68 si->valid_node_count = valid_node_count(sbi);
69 si->valid_inode_count = valid_inode_count(sbi);
70 si->inline_xattr = atomic_read(&sbi->inline_xattr);

--- 80 unchanged lines hidden (view full) ---

151{
152 struct f2fs_stat_info *si = F2FS_STAT(sbi);
153 unsigned npages;
154 int i;
155
156 if (si->base_mem)
157 goto get_cache;
158
71 si->total_count = (int)sbi->user_block_count / sbi->blocks_per_seg;
72 si->rsvd_segs = reserved_segments(sbi);
73 si->overp_segs = overprovision_segments(sbi);
74 si->valid_count = valid_user_blocks(sbi);
75 si->discard_blks = discard_blocks(sbi);
76 si->valid_node_count = valid_node_count(sbi);
77 si->valid_inode_count = valid_inode_count(sbi);
78 si->inline_xattr = atomic_read(&sbi->inline_xattr);

--- 80 unchanged lines hidden (view full) ---

159{
160 struct f2fs_stat_info *si = F2FS_STAT(sbi);
161 unsigned npages;
162 int i;
163
164 if (si->base_mem)
165 goto get_cache;
166
159 si->base_mem = sizeof(struct f2fs_sb_info) + sbi->sb->s_blocksize;
167 /* build stat */
168 si->base_mem = sizeof(struct f2fs_stat_info);
169
170 /* build superblock */
171 si->base_mem += sizeof(struct f2fs_sb_info) + sbi->sb->s_blocksize;
160 si->base_mem += 2 * sizeof(struct f2fs_inode_info);
161 si->base_mem += sizeof(*sbi->ckpt);
162 si->base_mem += sizeof(struct percpu_counter) * NR_COUNT_TYPE;
163
164 /* build sm */
165 si->base_mem += sizeof(struct f2fs_sm_info);
166
167 /* build sit */

--- 157 unchanged lines hidden (view full) ---

325 si->hit_rbtree);
326 seq_printf(s, " - Hit Ratio: %llu%% (%llu / %llu)\n",
327 !si->total_ext ? 0 :
328 div64_u64(si->hit_total * 100, si->total_ext),
329 si->hit_total, si->total_ext);
330 seq_printf(s, " - Inner Struct Count: tree: %d(%d), node: %d\n",
331 si->ext_tree, si->zombie_tree, si->ext_node);
332 seq_puts(s, "\nBalancing F2FS Async:\n");
172 si->base_mem += 2 * sizeof(struct f2fs_inode_info);
173 si->base_mem += sizeof(*sbi->ckpt);
174 si->base_mem += sizeof(struct percpu_counter) * NR_COUNT_TYPE;
175
176 /* build sm */
177 si->base_mem += sizeof(struct f2fs_sm_info);
178
179 /* build sit */

--- 157 unchanged lines hidden (view full) ---

337 si->hit_rbtree);
338 seq_printf(s, " - Hit Ratio: %llu%% (%llu / %llu)\n",
339 !si->total_ext ? 0 :
340 div64_u64(si->hit_total * 100, si->total_ext),
341 si->hit_total, si->total_ext);
342 seq_printf(s, " - Inner Struct Count: tree: %d(%d), node: %d\n",
343 si->ext_tree, si->zombie_tree, si->ext_node);
344 seq_puts(s, "\nBalancing F2FS Async:\n");
333 seq_printf(s, " - IO (CP: %4d, Data: %4d, Flush: %4d, Discard: %4d)\n",
345 seq_printf(s, " - IO (CP: %4d, Data: %4d, Flush: (%4d %4d), "
346 "Discard: (%4d %4d))\n",
334 si->nr_wb_cp_data, si->nr_wb_data,
347 si->nr_wb_cp_data, si->nr_wb_data,
335 si->nr_flush, si->nr_discard);
336 seq_printf(s, " - inmem: %4d, atomic IO: %4d (Max. %4d)\n",
337 si->inmem_pages, si->aw_cnt, si->max_aw_cnt);
348 si->nr_flushing, si->nr_flushed,
349 si->nr_discarding, si->nr_discarded);
350 seq_printf(s, " - inmem: %4d, atomic IO: %4d (Max. %4d), "
351 "volatile IO: %4d (Max. %4d)\n",
352 si->inmem_pages, si->aw_cnt, si->max_aw_cnt,
353 si->vw_cnt, si->max_vw_cnt);
338 seq_printf(s, " - nodes: %4d in %4d\n",
339 si->ndirty_node, si->node_pages);
340 seq_printf(s, " - dents: %4d in dirs:%4d (%4d)\n",
341 si->ndirty_dent, si->ndirty_dirs, si->ndirty_all);
342 seq_printf(s, " - datas: %4d in files:%4d\n",
343 si->ndirty_data, si->ndirty_files);
344 seq_printf(s, " - meta: %4d in %4d\n",
345 si->ndirty_meta, si->meta_pages);

--- 83 unchanged lines hidden (view full) ---

429 atomic64_set(&sbi->read_hit_cached, 0);
430
431 atomic_set(&sbi->inline_xattr, 0);
432 atomic_set(&sbi->inline_inode, 0);
433 atomic_set(&sbi->inline_dir, 0);
434 atomic_set(&sbi->inplace_count, 0);
435
436 atomic_set(&sbi->aw_cnt, 0);
354 seq_printf(s, " - nodes: %4d in %4d\n",
355 si->ndirty_node, si->node_pages);
356 seq_printf(s, " - dents: %4d in dirs:%4d (%4d)\n",
357 si->ndirty_dent, si->ndirty_dirs, si->ndirty_all);
358 seq_printf(s, " - datas: %4d in files:%4d\n",
359 si->ndirty_data, si->ndirty_files);
360 seq_printf(s, " - meta: %4d in %4d\n",
361 si->ndirty_meta, si->meta_pages);

--- 83 unchanged lines hidden (view full) ---

445 atomic64_set(&sbi->read_hit_cached, 0);
446
447 atomic_set(&sbi->inline_xattr, 0);
448 atomic_set(&sbi->inline_inode, 0);
449 atomic_set(&sbi->inline_dir, 0);
450 atomic_set(&sbi->inplace_count, 0);
451
452 atomic_set(&sbi->aw_cnt, 0);
453 atomic_set(&sbi->vw_cnt, 0);
437 atomic_set(&sbi->max_aw_cnt, 0);
454 atomic_set(&sbi->max_aw_cnt, 0);
455 atomic_set(&sbi->max_vw_cnt, 0);
438
439 mutex_lock(&f2fs_stat_mutex);
440 list_add_tail(&si->stat_list, &f2fs_stat_list);
441 mutex_unlock(&f2fs_stat_mutex);
442
443 return 0;
444}
445

--- 38 unchanged lines hidden ---
456
457 mutex_lock(&f2fs_stat_mutex);
458 list_add_tail(&si->stat_list, &f2fs_stat_list);
459 mutex_unlock(&f2fs_stat_mutex);
460
461 return 0;
462}
463

--- 38 unchanged lines hidden ---