f2fs: add maximum prefree segments
authorJaegeuk Kim <jaegeuk@kernel.org>
Thu, 14 Jul 2016 01:23:35 +0000 (18:23 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Fri, 15 Jul 2016 22:21:21 +0000 (15:21 -0700)
In 1TB storage, we need to admit 22841 prefree segments, which can consume
too much segments.
This patch sets 8GB in max. prefree segments in that case.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/segment.c
fs/f2fs/segment.h

index 08f6c0be20cf44042d363ace1851f6e6575c1b7a..e87aa058f57a671e0fb5170329192e301ff17fa7 100644 (file)
@@ -2409,6 +2409,9 @@ int build_segment_manager(struct f2fs_sb_info *sbi)
        sm_info->ssa_blkaddr = le32_to_cpu(raw_super->ssa_blkaddr);
        sm_info->rec_prefree_segments = sm_info->main_segments *
                                        DEF_RECLAIM_PREFREE_SEGMENTS / 100;
+       if (sm_info->rec_prefree_segments > DEF_MAX_RECLAIM_PREFREE_SEGMENTS)
+               sm_info->rec_prefree_segments = DEF_MAX_RECLAIM_PREFREE_SEGMENTS;
+
        if (!test_opt(sbi, LFS))
                sm_info->ipu_policy = 1 << F2FS_IPU_FSYNC;
        sm_info->min_ipu_util = DEF_MIN_IPU_UTIL;
index 57d450fb4643a709401757c2393920ad3dbca333..b33f73ec60a487c7f86d078d50c222678445683b 100644 (file)
@@ -16,6 +16,7 @@
 #define NULL_SECNO                     ((unsigned int)(~0))
 
 #define DEF_RECLAIM_PREFREE_SEGMENTS   5       /* 5% over total segments */
+#define DEF_MAX_RECLAIM_PREFREE_SEGMENTS       4096    /* 8GB in maximum */
 
 /* L: Logical segment # in volume, R: Relative segment # in main area */
 #define GET_L2R_SEGNO(free_i, segno)   (segno - free_i->start_segno)
This page took 0.045715 seconds and 5 git commands to generate.