aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/filesystems/f2fs.txt8
-rw-r--r--fs/f2fs/segment.c3
-rw-r--r--fs/f2fs/segment.h2
3 files changed, 8 insertions, 5 deletions
diff --git a/Documentation/filesystems/f2fs.txt b/Documentation/filesystems/f2fs.txt
index f415b9fc4cc8..2f6d0218dd22 100644
--- a/Documentation/filesystems/f2fs.txt
+++ b/Documentation/filesystems/f2fs.txt
@@ -169,9 +169,11 @@ Files in /sys/fs/f2fs/<devname>
169 169
170 reclaim_segments This parameter controls the number of prefree 170 reclaim_segments This parameter controls the number of prefree
171 segments to be reclaimed. If the number of prefree 171 segments to be reclaimed. If the number of prefree
172 segments is larger than this number, f2fs tries to 172 segments is larger than the number of segments
173 conduct checkpoint to reclaim the prefree segments 173 in the proportion to the percentage over total
174 to free segments. By default, 100 segments, 200MB. 174 volume size, f2fs tries to conduct checkpoint to
175 reclaim the prefree segments to free segments.
176 By default, 5% over total # of segments.
175 177
176 max_small_discards This parameter controls the number of discard 178 max_small_discards This parameter controls the number of discard
177 commands that consist small blocks less than 2MB. 179 commands that consist small blocks less than 2MB.
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 6c5a4f0218ca..e7ff23a536a4 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -1758,7 +1758,8 @@ int build_segment_manager(struct f2fs_sb_info *sbi)
1758 sm_info->ovp_segments = le32_to_cpu(ckpt->overprov_segment_count); 1758 sm_info->ovp_segments = le32_to_cpu(ckpt->overprov_segment_count);
1759 sm_info->main_segments = le32_to_cpu(raw_super->segment_count_main); 1759 sm_info->main_segments = le32_to_cpu(raw_super->segment_count_main);
1760 sm_info->ssa_blkaddr = le32_to_cpu(raw_super->ssa_blkaddr); 1760 sm_info->ssa_blkaddr = le32_to_cpu(raw_super->ssa_blkaddr);
1761 sm_info->rec_prefree_segments = DEF_RECLAIM_PREFREE_SEGMENTS; 1761 sm_info->rec_prefree_segments = sm_info->main_segments *
1762 DEF_RECLAIM_PREFREE_SEGMENTS / 100;
1762 sm_info->ipu_policy = F2FS_IPU_DISABLE; 1763 sm_info->ipu_policy = F2FS_IPU_DISABLE;
1763 sm_info->min_ipu_util = DEF_MIN_IPU_UTIL; 1764 sm_info->min_ipu_util = DEF_MIN_IPU_UTIL;
1764 1765
diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h
index 9fc46ee27bb8..7091204680f4 100644
--- a/fs/f2fs/segment.h
+++ b/fs/f2fs/segment.h
@@ -14,7 +14,7 @@
14#define NULL_SEGNO ((unsigned int)(~0)) 14#define NULL_SEGNO ((unsigned int)(~0))
15#define NULL_SECNO ((unsigned int)(~0)) 15#define NULL_SECNO ((unsigned int)(~0))
16 16
17#define DEF_RECLAIM_PREFREE_SEGMENTS 100 /* 200MB of prefree segments */ 17#define DEF_RECLAIM_PREFREE_SEGMENTS 5 /* 5% over total segments */
18 18
19/* L: Logical segment # in volume, R: Relative segment # in main area */ 19/* L: Logical segment # in volume, R: Relative segment # in main area */
20#define GET_L2R_SEGNO(free_i, segno) (segno - free_i->start_segno) 20#define GET_L2R_SEGNO(free_i, segno) (segno - free_i->start_segno)