BG_GC
si->gc_secs[DATA][BG_GC] + si->gc_secs[DATA][FG_GC],
si->gc_secs[DATA][BG_GC]);
si->gc_secs[NODE][BG_GC] + si->gc_secs[NODE][FG_GC],
si->gc_secs[NODE][BG_GC]);
si->gc_segs[DATA][BG_GC] + si->gc_segs[DATA][FG_GC],
si->gc_segs[DATA][BG_GC]);
si->gc_segs[NODE][BG_GC] + si->gc_segs[NODE][FG_GC],
si->gc_segs[NODE][BG_GC]);
si->bg_data_blks += ((gc_type) == BG_GC) ? (blks) : 0; \
si->bg_node_blks += ((gc_type) == BG_GC) ? (blks) : 0; \
gc_control.init_gc_type = sync ? FG_GC : BG_GC;
.init_gc_type = range->sync ? FG_GC : BG_GC,
if (gc_type == BG_GC && has_not_enough_free_secs(sbi, 0, 0))
int type = fio.sbi->am.atgc_enabled && (gc_type == BG_GC) &&
if (gc_type == BG_GC) {
gc_control.init_gc_type = sync_mode ? FG_GC : BG_GC;
if ((gc_type == BG_GC && has_not_enough_free_secs(sbi, 0, 0)) ||
if (gc_type == BG_GC || one_time) {
if (gc_type == BG_GC && __is_large_section(sbi) &&
if (gc_type == BG_GC && gc_control->no_bg_gc) {
for (gc_type = BG_GC; gc_type <= FG_GC; gc_type++)
if (gc_type == BG_GC) {
if (sbi->next_victim_seg[BG_GC] != NULL_SEGNO) {
p.min_segno = sbi->next_victim_seg[BG_GC];
sbi->next_victim_seg[BG_GC] = NULL_SEGNO;
if (gc_type == BG_GC && test_bit(secno, dirty_i->victim_secmap))
if (!f2fs_get_victim(sbi, &segno, BG_GC, seg_type,
if (!f2fs_get_victim(sbi, &segno, BG_GC, i,
FG_GC : BG_GC,
if (GET_SEC_FROM_SEG(sbi, sbi->next_victim_seg[BG_GC]) == secno)
sbi->next_victim_seg[BG_GC] = NULL_SEGNO;
sbi->next_victim_seg[BG_GC] = NULL_SEGNO;
{ BG_GC, "Background GC" })
TRACE_DEFINE_ENUM(BG_GC);
(__entry->gc_type == BG_GC) ? __entry->no_bg_gc : -1,