diff options
author | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2014-03-19 01:17:21 -0400 |
---|---|---|
committer | Jaegeuk Kim <jaegeuk.kim@samsung.com> | 2014-03-20 09:10:10 -0400 |
commit | 58c410351eba3d24f741c85a0eb9eaf15c94047d (patch) | |
tree | 0d6f328aa1c7645a8ba92bc80c91cfd425ca3c91 | |
parent | 9179682591c231cc77840d4e75929cc1fa573365 (diff) |
f2fs: change reclaim rate in percentage
It is more reasonable to determine the reclaiming rate of prefree segments
according to the volume size, which is set to 5% by default.
For example, if the volume is 128GB, the prefree segments are reclaimed
when the number reaches to 6.4GB.
Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
-rw-r--r-- | Documentation/filesystems/f2fs.txt | 8 | ||||
-rw-r--r-- | fs/f2fs/segment.c | 3 | ||||
-rw-r--r-- | fs/f2fs/segment.h | 2 |
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) |