rec = container_of(hdr, typeof(*rec), cur_hdr);
- if (mdd_changelog_is_too_idle(mdd, rec->cur_endrec, rec->cur_time) &&
- rec->cur_endrec < mcgc->mcgc_minrec) {
+ if (rec->cur_endrec < mcgc->mcgc_minrec &&
+ (mdd->mdd_changelog_emrg_gc ||
+ mdd_changelog_is_too_idle(mdd, rec->cur_endrec, rec->cur_time))) {
mcgc->mcgc_mintime = rec->cur_time;
mcgc->mcgc_minrec = rec->cur_endrec;
mcgc->mcgc_id = rec->cur_id;
mdd_changelog_user_purge(env, mdd, mcgc.mcgc_id);
+ if (mdd->mdd_changelog_emrg_gc &&
+ mdd_changelog_is_space_safe(env, mdd, ctxt->loc_handle, 0))
+ mdd->mdd_changelog_emrg_gc = false;
+
if (kthread_should_stop())
GOTO(out_ctxt, rc = 0);
}