f2fs: fix equation of has_not_enough_free_secs()
Practically, has_not_enough_free_secs() should calculate with the numbers of current node and directory data blocks together. Actually the equation was implemented in need_to_flush(). So, this patch removes need_flush() and moves the equation into has_not_enough_free_secs(). Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
This commit is contained in:
@@ -459,7 +459,20 @@ 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)
|
||||
{
|
||||
return free_sections(sbi) <= reserved_sections(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;
|
||||
|
||||
if (sbi->por_doing)
|
||||
return false;
|
||||
|
||||
if (free_sections(sbi) <= (node_secs + 2 * dent_secs +
|
||||
reserved_sections(sbi)))
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
static inline int utilization(struct f2fs_sb_info *sbi)
|
||||
|
Reference in New Issue
Block a user