From 031e8ca4e4ab0eefc00b9157e54ae78ab15e685e Mon Sep 17 00:00:00 2001 From: Namjae Jeon Date: Sat, 2 Feb 2013 23:52:59 +0900 Subject: [PATCH] --- yaml --- r: 358995 b: refs/heads/master c: 5ac206cf4f9aad871aa1f1dd653a3404092db56c h: refs/heads/master i: 358993: 0295d28583d398bfd505d7b2295b2d157677e75a 358991: 42ce3b22b6774be04c44254eb64becb361d5fd47 v: v3 --- [refs] | 2 +- trunk/fs/f2fs/f2fs.h | 8 ++++++++ trunk/fs/f2fs/gc.h | 8 ++------ trunk/fs/f2fs/segment.h | 9 ++------- 4 files changed, 13 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index 60f073370536..dbdcfce73127 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 25718423ea6f7118f9c173adff0fac52414571b8 +refs/heads/master: 5ac206cf4f9aad871aa1f1dd653a3404092db56c diff --git a/trunk/fs/f2fs/f2fs.h b/trunk/fs/f2fs/f2fs.h index 5022a7d7f7ca..87840bccaf21 100644 --- a/trunk/fs/f2fs/f2fs.h +++ b/trunk/fs/f2fs/f2fs.h @@ -573,6 +573,14 @@ static inline int get_pages(struct f2fs_sb_info *sbi, int count_type) return atomic_read(&sbi->nr_pages[count_type]); } +static inline int get_blocktype_secs(struct f2fs_sb_info *sbi, int block_type) +{ + unsigned int pages_per_sec = sbi->segs_per_sec * + (1 << sbi->log_blocks_per_seg); + return ((get_pages(sbi, block_type) + pages_per_sec - 1) + >> sbi->log_blocks_per_seg) / sbi->segs_per_sec; +} + static inline block_t valid_user_blocks(struct f2fs_sb_info *sbi) { block_t ret; diff --git a/trunk/fs/f2fs/gc.h b/trunk/fs/f2fs/gc.h index 3abdf83b5c16..c407a75a7daa 100644 --- a/trunk/fs/f2fs/gc.h +++ b/trunk/fs/f2fs/gc.h @@ -106,11 +106,7 @@ static inline int is_idle(struct f2fs_sb_info *sbi) static inline bool should_do_checkpoint(struct f2fs_sb_info *sbi) { - unsigned int pages_per_sec = sbi->segs_per_sec * - (1 << sbi->log_blocks_per_seg); - int node_secs = ((get_pages(sbi, F2FS_DIRTY_NODES) + pages_per_sec - 1) - >> sbi->log_blocks_per_seg) / sbi->segs_per_sec; - int dent_secs = ((get_pages(sbi, F2FS_DIRTY_DENTS) + pages_per_sec - 1) - >> sbi->log_blocks_per_seg) / sbi->segs_per_sec; + int node_secs = get_blocktype_secs(sbi, F2FS_DIRTY_NODES); + int dent_secs = get_blocktype_secs(sbi, F2FS_DIRTY_DENTS); return free_sections(sbi) <= (node_secs + 2 * dent_secs + 2); } diff --git a/trunk/fs/f2fs/segment.h b/trunk/fs/f2fs/segment.h index 66a288a52fd3..a9417b94d6bc 100644 --- a/trunk/fs/f2fs/segment.h +++ b/trunk/fs/f2fs/segment.h @@ -459,13 +459,8 @@ static inline int get_ssr_segment(struct f2fs_sb_info *sbi, int type) static inline bool has_not_enough_free_secs(struct f2fs_sb_info *sbi) { - unsigned int pages_per_sec = (1 << sbi->log_blocks_per_seg) * - sbi->segs_per_sec; - int node_secs = ((get_pages(sbi, F2FS_DIRTY_NODES) + pages_per_sec - 1) - >> sbi->log_blocks_per_seg) / sbi->segs_per_sec; - int dent_secs = ((get_pages(sbi, F2FS_DIRTY_DENTS) + pages_per_sec - 1) - >> sbi->log_blocks_per_seg) / sbi->segs_per_sec; - + int node_secs = get_blocktype_secs(sbi, F2FS_DIRTY_NODES); + int dent_secs = get_blocktype_secs(sbi, F2FS_DIRTY_DENTS); if (sbi->por_doing) return false;