aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/f2fs/debug.c16
-rw-r--r--fs/f2fs/f2fs.h11
2 files changed, 16 insertions, 11 deletions
diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c
index 0d6c6aafb235..fd12b7ff6e2e 100644
--- a/fs/f2fs/debug.c
+++ b/fs/f2fs/debug.c
@@ -29,7 +29,7 @@ static DEFINE_MUTEX(f2fs_stat_mutex);
29 29
30static void update_general_status(struct f2fs_sb_info *sbi) 30static void update_general_status(struct f2fs_sb_info *sbi)
31{ 31{
32 struct f2fs_stat_info *si = sbi->stat_info; 32 struct f2fs_stat_info *si = F2FS_STAT(sbi);
33 int i; 33 int i;
34 34
35 /* valid check of the segment numbers */ 35 /* valid check of the segment numbers */
@@ -83,7 +83,7 @@ static void update_general_status(struct f2fs_sb_info *sbi)
83 */ 83 */
84static void update_sit_info(struct f2fs_sb_info *sbi) 84static void update_sit_info(struct f2fs_sb_info *sbi)
85{ 85{
86 struct f2fs_stat_info *si = sbi->stat_info; 86 struct f2fs_stat_info *si = F2FS_STAT(sbi);
87 unsigned int blks_per_sec, hblks_per_sec, total_vblocks, bimodal, dist; 87 unsigned int blks_per_sec, hblks_per_sec, total_vblocks, bimodal, dist;
88 struct sit_info *sit_i = SIT_I(sbi); 88 struct sit_info *sit_i = SIT_I(sbi);
89 unsigned int segno, vblocks; 89 unsigned int segno, vblocks;
@@ -118,7 +118,7 @@ static void update_sit_info(struct f2fs_sb_info *sbi)
118 */ 118 */
119static void update_mem_info(struct f2fs_sb_info *sbi) 119static void update_mem_info(struct f2fs_sb_info *sbi)
120{ 120{
121 struct f2fs_stat_info *si = sbi->stat_info; 121 struct f2fs_stat_info *si = F2FS_STAT(sbi);
122 unsigned npages; 122 unsigned npages;
123 123
124 if (si->base_mem) 124 if (si->base_mem)
@@ -305,11 +305,10 @@ int f2fs_build_stats(struct f2fs_sb_info *sbi)
305 struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi); 305 struct f2fs_super_block *raw_super = F2FS_RAW_SUPER(sbi);
306 struct f2fs_stat_info *si; 306 struct f2fs_stat_info *si;
307 307
308 sbi->stat_info = kzalloc(sizeof(struct f2fs_stat_info), GFP_KERNEL); 308 si = kzalloc(sizeof(struct f2fs_stat_info), GFP_KERNEL);
309 if (!sbi->stat_info) 309 if (!si)
310 return -ENOMEM; 310 return -ENOMEM;
311 311
312 si = sbi->stat_info;
313 si->all_area_segs = le32_to_cpu(raw_super->segment_count); 312 si->all_area_segs = le32_to_cpu(raw_super->segment_count);
314 si->sit_area_segs = le32_to_cpu(raw_super->segment_count_sit); 313 si->sit_area_segs = le32_to_cpu(raw_super->segment_count_sit);
315 si->nat_area_segs = le32_to_cpu(raw_super->segment_count_nat); 314 si->nat_area_segs = le32_to_cpu(raw_super->segment_count_nat);
@@ -319,6 +318,7 @@ int f2fs_build_stats(struct f2fs_sb_info *sbi)
319 si->main_area_zones = si->main_area_sections / 318 si->main_area_zones = si->main_area_sections /
320 le32_to_cpu(raw_super->secs_per_zone); 319 le32_to_cpu(raw_super->secs_per_zone);
321 si->sbi = sbi; 320 si->sbi = sbi;
321 sbi->stat_info = si;
322 322
323 mutex_lock(&f2fs_stat_mutex); 323 mutex_lock(&f2fs_stat_mutex);
324 list_add_tail(&si->stat_list, &f2fs_stat_list); 324 list_add_tail(&si->stat_list, &f2fs_stat_list);
@@ -329,13 +329,13 @@ int f2fs_build_stats(struct f2fs_sb_info *sbi)
329 329
330void f2fs_destroy_stats(struct f2fs_sb_info *sbi) 330void f2fs_destroy_stats(struct f2fs_sb_info *sbi)
331{ 331{
332 struct f2fs_stat_info *si = sbi->stat_info; 332 struct f2fs_stat_info *si = F2FS_STAT(sbi);
333 333
334 mutex_lock(&f2fs_stat_mutex); 334 mutex_lock(&f2fs_stat_mutex);
335 list_del(&si->stat_list); 335 list_del(&si->stat_list);
336 mutex_unlock(&f2fs_stat_mutex); 336 mutex_unlock(&f2fs_stat_mutex);
337 337
338 kfree(sbi->stat_info); 338 kfree(si);
339} 339}
340 340
341void __init f2fs_create_root_stats(void) 341void __init f2fs_create_root_stats(void)
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index c7620b973073..0a352b658ed8 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -1113,11 +1113,16 @@ struct f2fs_stat_info {
1113 unsigned base_mem, cache_mem; 1113 unsigned base_mem, cache_mem;
1114}; 1114};
1115 1115
1116static inline struct f2fs_stat_info *F2FS_STAT(struct f2fs_sb_info *sbi)
1117{
1118 return (struct f2fs_stat_info*)sbi->stat_info;
1119}
1120
1116#define stat_inc_call_count(si) ((si)->call_count++) 1121#define stat_inc_call_count(si) ((si)->call_count++)
1117 1122
1118#define stat_inc_seg_count(sbi, type) \ 1123#define stat_inc_seg_count(sbi, type) \
1119 do { \ 1124 do { \
1120 struct f2fs_stat_info *si = sbi->stat_info; \ 1125 struct f2fs_stat_info *si = F2FS_STAT(sbi); \
1121 (si)->tot_segs++; \ 1126 (si)->tot_segs++; \
1122 if (type == SUM_TYPE_DATA) \ 1127 if (type == SUM_TYPE_DATA) \
1123 si->data_segs++; \ 1128 si->data_segs++; \
@@ -1130,14 +1135,14 @@ struct f2fs_stat_info {
1130 1135
1131#define stat_inc_data_blk_count(sbi, blks) \ 1136#define stat_inc_data_blk_count(sbi, blks) \
1132 do { \ 1137 do { \
1133 struct f2fs_stat_info *si = sbi->stat_info; \ 1138 struct f2fs_stat_info *si = F2FS_STAT(sbi); \
1134 stat_inc_tot_blk_count(si, blks); \ 1139 stat_inc_tot_blk_count(si, blks); \
1135 si->data_blks += (blks); \ 1140 si->data_blks += (blks); \
1136 } while (0) 1141 } while (0)
1137 1142
1138#define stat_inc_node_blk_count(sbi, blks) \ 1143#define stat_inc_node_blk_count(sbi, blks) \
1139 do { \ 1144 do { \
1140 struct f2fs_stat_info *si = sbi->stat_info; \ 1145 struct f2fs_stat_info *si = F2FS_STAT(sbi); \
1141 stat_inc_tot_blk_count(si, blks); \ 1146 stat_inc_tot_blk_count(si, blks); \
1142 si->node_blks += (blks); \ 1147 si->node_blks += (blks); \
1143 } while (0) 1148 } while (0)