diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index 2a8f4acdb86b949a394499b2b74dc3f154f6b628..7151d7de7d9580b2a852c72e042892424ebbbbb6 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -646,12 +646,14 @@ static void gc_data_segment(struct f2fs_sb_info *sbi, struct f2fs_summary *sum, } static int __get_victim(struct f2fs_sb_info *sbi, unsigned int *victim, - int gc_type, int type) + int gc_type) { struct sit_info *sit_i = SIT_I(sbi); int ret; + mutex_lock(&sit_i->sentry_lock); - ret = DIRTY_I(sbi)->v_ops->get_victim(sbi, victim, gc_type, type, LFS); + ret = DIRTY_I(sbi)->v_ops->get_victim(sbi, victim, gc_type, + NO_CHECK_TYPE, LFS); mutex_unlock(&sit_i->sentry_lock); return ret; } @@ -709,7 +711,7 @@ int f2fs_gc(struct f2fs_sb_info *sbi) write_checkpoint(sbi, &cpc); } - if (!__get_victim(sbi, &segno, gc_type, NO_CHECK_TYPE)) + if (!__get_victim(sbi, &segno, gc_type)) goto stop; ret = 0;