f2fs: push some variables to debug part

Some, counters are needed only for the statistical information
while debugging.
So, those can be controlled using CONFIG_F2FS_STAT_FS,
pushing the usage for few variables under this flag.

Signed-off-by: Namjae Jeon <namjae.jeon@samsung.com>
Signed-off-by: Amit Sahrawat <a.sahrawat@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
This commit is contained in:
Namjae Jeon 2013-05-23 22:57:53 +09:00 committed by Jaegeuk Kim
parent a9841c4dbb
commit 35b09d82c3
5 changed files with 21 additions and 2 deletions

View File

@ -478,7 +478,9 @@ retry:
} }
} }
list_add_tail(&new->list, head); list_add_tail(&new->list, head);
#ifdef CONFIG_F2FS_STAT_FS
sbi->n_dirty_dirs++; sbi->n_dirty_dirs++;
#endif
BUG_ON(!S_ISDIR(inode->i_mode)); BUG_ON(!S_ISDIR(inode->i_mode));
out: out:
@ -508,7 +510,9 @@ void remove_dirty_dir_inode(struct inode *inode)
if (entry->inode == inode) { if (entry->inode == inode) {
list_del(&entry->list); list_del(&entry->list);
kmem_cache_free(inode_entry_slab, entry); kmem_cache_free(inode_entry_slab, entry);
#ifdef CONFIG_F2FS_STAT_FS
sbi->n_dirty_dirs--; sbi->n_dirty_dirs--;
#endif
break; break;
} }
} }

View File

@ -68,7 +68,9 @@ static int check_extent_cache(struct inode *inode, pgoff_t pgofs,
struct buffer_head *bh_result) struct buffer_head *bh_result)
{ {
struct f2fs_inode_info *fi = F2FS_I(inode); struct f2fs_inode_info *fi = F2FS_I(inode);
#ifdef CONFIG_F2FS_STAT_FS
struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
#endif
pgoff_t start_fofs, end_fofs; pgoff_t start_fofs, end_fofs;
block_t start_blkaddr; block_t start_blkaddr;
@ -78,7 +80,9 @@ static int check_extent_cache(struct inode *inode, pgoff_t pgofs,
return 0; return 0;
} }
#ifdef CONFIG_F2FS_STAT_FS
sbi->total_hit_ext++; sbi->total_hit_ext++;
#endif
start_fofs = fi->ext.fofs; start_fofs = fi->ext.fofs;
end_fofs = fi->ext.fofs + fi->ext.len - 1; end_fofs = fi->ext.fofs + fi->ext.len - 1;
start_blkaddr = fi->ext.blk_addr; start_blkaddr = fi->ext.blk_addr;
@ -96,7 +100,9 @@ static int check_extent_cache(struct inode *inode, pgoff_t pgofs,
else else
bh_result->b_size = UINT_MAX; bh_result->b_size = UINT_MAX;
#ifdef CONFIG_F2FS_STAT_FS
sbi->read_hit_ext++; sbi->read_hit_ext++;
#endif
read_unlock(&fi->ext.ext_lock); read_unlock(&fi->ext.ext_lock);
return 1; return 1;
} }

View File

@ -372,7 +372,6 @@ struct f2fs_sb_info {
/* for directory inode management */ /* for directory inode management */
struct list_head dir_inode_list; /* dir inode list */ struct list_head dir_inode_list; /* dir inode list */
spinlock_t dir_inode_lock; /* for dir inode list lock */ spinlock_t dir_inode_lock; /* for dir inode list lock */
unsigned int n_dirty_dirs; /* # of dir inodes */
/* basic file system units */ /* basic file system units */
unsigned int log_sectors_per_block; /* log2 sectors per block */ unsigned int log_sectors_per_block; /* log2 sectors per block */
@ -409,12 +408,15 @@ struct f2fs_sb_info {
* for stat information. * for stat information.
* one is for the LFS mode, and the other is for the SSR mode. * one is for the LFS mode, and the other is for the SSR mode.
*/ */
#ifdef CONFIG_F2FS_STAT_FS
struct f2fs_stat_info *stat_info; /* FS status information */ struct f2fs_stat_info *stat_info; /* FS status information */
unsigned int segment_count[2]; /* # of allocated segments */ unsigned int segment_count[2]; /* # of allocated segments */
unsigned int block_count[2]; /* # of allocated blocks */ unsigned int block_count[2]; /* # of allocated blocks */
unsigned int last_victim[2]; /* last victim segment # */
int total_hit_ext, read_hit_ext; /* extent cache hit ratio */ int total_hit_ext, read_hit_ext; /* extent cache hit ratio */
int bg_gc; /* background gc calls */ int bg_gc; /* background gc calls */
unsigned int n_dirty_dirs; /* # of dir inodes */
#endif
unsigned int last_victim[2]; /* last victim segment # */
spinlock_t stat_lock; /* lock for stat operations */ spinlock_t stat_lock; /* lock for stat operations */
}; };

View File

@ -76,7 +76,9 @@ static int gc_thread_func(void *data)
else else
wait_ms = increase_sleep_time(wait_ms); wait_ms = increase_sleep_time(wait_ms);
#ifdef CONFIG_F2FS_STAT_FS
sbi->bg_gc++; sbi->bg_gc++;
#endif
/* if return value is not zero, no victim was selected */ /* if return value is not zero, no victim was selected */
if (f2fs_gc(sbi)) if (f2fs_gc(sbi))

View File

@ -610,7 +610,10 @@ static void allocate_segment_by_default(struct f2fs_sb_info *sbi,
else else
new_curseg(sbi, type, false); new_curseg(sbi, type, false);
out: out:
#ifdef CONFIG_F2FS_STAT_FS
sbi->segment_count[curseg->alloc_type]++; sbi->segment_count[curseg->alloc_type]++;
#endif
return;
} }
void allocate_new_segments(struct f2fs_sb_info *sbi) void allocate_new_segments(struct f2fs_sb_info *sbi)
@ -846,7 +849,9 @@ static void do_write_page(struct f2fs_sb_info *sbi, struct page *page,
mutex_lock(&sit_i->sentry_lock); mutex_lock(&sit_i->sentry_lock);
__refresh_next_blkoff(sbi, curseg); __refresh_next_blkoff(sbi, curseg);
#ifdef CONFIG_F2FS_STAT_FS
sbi->block_count[curseg->alloc_type]++; sbi->block_count[curseg->alloc_type]++;
#endif
/* /*
* SIT information should be updated before segment allocation, * SIT information should be updated before segment allocation,