Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 58c41035 authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

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: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
parent 91796825
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -169,9 +169,11 @@ Files in /sys/fs/f2fs/<devname>

 reclaim_segments             This parameter controls the number of prefree
                              segments to be reclaimed. If the number of prefree
			      segments is larger than this number, f2fs tries to
			      conduct checkpoint to reclaim the prefree segments
			      to free segments. By default, 100 segments, 200MB.
			      segments is larger than the number of segments
			      in the proportion to the percentage over total
			      volume size, f2fs tries to conduct checkpoint to
			      reclaim the prefree segments to free segments.
			      By default, 5% over total # of segments.

 max_small_discards	      This parameter controls the number of discard
			      commands that consist small blocks less than 2MB.
+2 −1
Original line number Diff line number Diff line
@@ -1758,7 +1758,8 @@ int build_segment_manager(struct f2fs_sb_info *sbi)
	sm_info->ovp_segments = le32_to_cpu(ckpt->overprov_segment_count);
	sm_info->main_segments = le32_to_cpu(raw_super->segment_count_main);
	sm_info->ssa_blkaddr = le32_to_cpu(raw_super->ssa_blkaddr);
	sm_info->rec_prefree_segments = DEF_RECLAIM_PREFREE_SEGMENTS;
	sm_info->rec_prefree_segments = sm_info->main_segments *
					DEF_RECLAIM_PREFREE_SEGMENTS / 100;
	sm_info->ipu_policy = F2FS_IPU_DISABLE;
	sm_info->min_ipu_util = DEF_MIN_IPU_UTIL;

+1 −1
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
#define NULL_SEGNO			((unsigned int)(~0))
#define NULL_SECNO			((unsigned int)(~0))

#define DEF_RECLAIM_PREFREE_SEGMENTS	100	/* 200MB of prefree segments */
#define DEF_RECLAIM_PREFREE_SEGMENTS	5	/* 5% over total segments */

/* L: Logical segment # in volume, R: Relative segment # in main area */
#define GET_L2R_SEGNO(free_i, segno)	(segno - free_i->start_segno)