mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
f2fs: change the ipu_policy option to enable combinations
This patch changes the ipu_policy setting to use any combination of orthogonal policies. Signed-off-by: Changman Lee <[email protected]> Signed-off-by: Jaegeuk Kim <[email protected]>
This commit is contained in:
parent
210f41bc04
commit
9b5f136fd4
3 changed files with 20 additions and 27 deletions
|
|
@ -1928,7 +1928,7 @@ 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;
|
||||
sm_info->ipu_policy = F2FS_IPU_FSYNC;
|
||||
sm_info->ipu_policy = 1 << F2FS_IPU_FSYNC;
|
||||
sm_info->min_ipu_util = DEF_MIN_IPU_UTIL;
|
||||
sm_info->min_fsync_blocks = DEF_MIN_FSYNC_BLOCKS;
|
||||
|
||||
|
|
|
|||
|
|
@ -487,40 +487,33 @@ enum {
|
|||
F2FS_IPU_UTIL,
|
||||
F2FS_IPU_SSR_UTIL,
|
||||
F2FS_IPU_FSYNC,
|
||||
F2FS_IPU_DISABLE,
|
||||
};
|
||||
|
||||
static inline bool need_inplace_update(struct inode *inode)
|
||||
{
|
||||
struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
|
||||
unsigned int policy = SM_I(sbi)->ipu_policy;
|
||||
|
||||
/* IPU can be done only for the user data */
|
||||
if (S_ISDIR(inode->i_mode))
|
||||
return false;
|
||||
|
||||
switch (SM_I(sbi)->ipu_policy) {
|
||||
case F2FS_IPU_FORCE:
|
||||
if (policy & (0x1 << F2FS_IPU_FORCE))
|
||||
return true;
|
||||
case F2FS_IPU_SSR:
|
||||
if (need_SSR(sbi))
|
||||
return true;
|
||||
break;
|
||||
case F2FS_IPU_UTIL:
|
||||
if (utilization(sbi) > SM_I(sbi)->min_ipu_util)
|
||||
return true;
|
||||
break;
|
||||
case F2FS_IPU_SSR_UTIL:
|
||||
if (need_SSR(sbi) && utilization(sbi) > SM_I(sbi)->min_ipu_util)
|
||||
return true;
|
||||
break;
|
||||
case F2FS_IPU_FSYNC:
|
||||
/* this is only set during fdatasync */
|
||||
if (is_inode_flag_set(F2FS_I(inode), FI_NEED_IPU))
|
||||
return true;
|
||||
break;
|
||||
case F2FS_IPU_DISABLE:
|
||||
break;
|
||||
}
|
||||
if (policy & (0x1 << F2FS_IPU_SSR) && need_SSR(sbi))
|
||||
return true;
|
||||
if (policy & (0x1 << F2FS_IPU_UTIL) &&
|
||||
utilization(sbi) > SM_I(sbi)->min_ipu_util)
|
||||
return true;
|
||||
if (policy & (0x1 << F2FS_IPU_SSR_UTIL) && need_SSR(sbi) &&
|
||||
utilization(sbi) > SM_I(sbi)->min_ipu_util)
|
||||
return true;
|
||||
|
||||
/* this is only set during fdatasync */
|
||||
if (policy & (0x1 << F2FS_IPU_FSYNC) &&
|
||||
is_inode_flag_set(F2FS_I(inode), FI_NEED_IPU))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue