FG_GC
si->gc_secs[DATA][BG_GC] + si->gc_secs[DATA][FG_GC],
si->gc_secs[NODE][BG_GC] + si->gc_secs[NODE][FG_GC],
si->gc_segs[DATA][BG_GC] + si->gc_segs[DATA][FG_GC],
si->gc_segs[NODE][BG_GC] + si->gc_segs[NODE][FG_GC],
.init_gc_type = FG_GC,
gc_control.init_gc_type = sync ? FG_GC : BG_GC;
.init_gc_type = range->sync ? FG_GC : BG_GC,
.init_gc_type = FG_GC,
bool fggc = (gc_type == FG_GC);
if (!err && gc_type == FG_GC)
gc_control.init_gc_type = sync_mode ? FG_GC : BG_GC;
if (!err && (gc_type == FG_GC ||
if (gc_type == FG_GC &&
gc_type = FG_GC;
if (ret == -ENODATA && gc_type == FG_GC &&
if (gc_type == FG_GC) {
if (gc_type == FG_GC)
do_garbage_collect(sbi, segno, &gc_list, FG_GC, true, false);
for (gc_type = BG_GC; gc_type <= FG_GC; gc_type++)
if (gc_type != FG_GC &&
if (gc_type != FG_GC)
if (gc_type == FG_GC)
if (gc_type == FG_GC &&
sbi->next_victim_seg[FG_GC] != NULL_SEGNO) {
p.min_segno = sbi->next_victim_seg[FG_GC];
sbi->next_victim_seg[FG_GC] = NULL_SEGNO;
if (p.alloc_mode == LFS && gc_type == FG_GC) {
if (gc_type == FG_GC && f2fs_section_is_pinned(dirty_i, secno))
if (gc_type == FG_GC)
if (gc_type == FG_GC) {
FG_GC : BG_GC,
if (GET_SEC_FROM_SEG(sbi, sbi->next_victim_seg[FG_GC]) == secno)
sbi->next_victim_seg[FG_GC] = NULL_SEGNO;
.init_gc_type = FG_GC,
sbi->next_victim_seg[FG_GC] = NULL_SEGNO;
{ FG_GC, "Foreground GC" }, \
TRACE_DEFINE_ENUM(FG_GC);