diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index 24acbbbd0b1dd56fa39dd6e9ffce49b4f751e12a..400bc6d78372237f69d77cc9df47c71d15a10666 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -925,10 +925,14 @@ int f2fs_gc(struct f2fs_sb_info *sbi, bool sync) */ if (__get_victim(sbi, &segno, gc_type) || prefree_segments(sbi)) { - write_checkpoint(sbi, &cpc); + ret = write_checkpoint(sbi, &cpc); + if (ret) + goto stop; segno = NULL_SEGNO; } else if (has_not_enough_free_secs(sbi, 0, 0)) { - write_checkpoint(sbi, &cpc); + ret = write_checkpoint(sbi, &cpc); + if (ret) + goto stop; } } @@ -948,7 +952,7 @@ int f2fs_gc(struct f2fs_sb_info *sbi, bool sync) goto gc_more; if (gc_type == FG_GC) - write_checkpoint(sbi, &cpc); + ret = write_checkpoint(sbi, &cpc); } stop: mutex_unlock(&sbi->gc_mutex);