diff options
| -rw-r--r-- | fs/f2fs/gc.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index c96e7c6354ef..9707773fdaac 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c | |||
| @@ -1140,9 +1140,9 @@ static int do_garbage_collect(struct f2fs_sb_info *sbi, | |||
| 1140 | GET_SUM_BLOCK(sbi, segno)); | 1140 | GET_SUM_BLOCK(sbi, segno)); |
| 1141 | f2fs_put_page(sum_page, 0); | 1141 | f2fs_put_page(sum_page, 0); |
| 1142 | 1142 | ||
| 1143 | if (get_valid_blocks(sbi, segno, false) == 0 || | 1143 | if (get_valid_blocks(sbi, segno, false) == 0) |
| 1144 | !PageUptodate(sum_page) || | 1144 | goto freed; |
| 1145 | unlikely(f2fs_cp_error(sbi))) | 1145 | if (!PageUptodate(sum_page) || unlikely(f2fs_cp_error(sbi))) |
| 1146 | goto next; | 1146 | goto next; |
| 1147 | 1147 | ||
| 1148 | sum = page_address(sum_page); | 1148 | sum = page_address(sum_page); |
| @@ -1170,6 +1170,7 @@ static int do_garbage_collect(struct f2fs_sb_info *sbi, | |||
| 1170 | 1170 | ||
| 1171 | stat_inc_seg_count(sbi, type, gc_type); | 1171 | stat_inc_seg_count(sbi, type, gc_type); |
| 1172 | 1172 | ||
| 1173 | freed: | ||
| 1173 | if (gc_type == FG_GC && | 1174 | if (gc_type == FG_GC && |
| 1174 | get_valid_blocks(sbi, segno, false) == 0) | 1175 | get_valid_blocks(sbi, segno, false) == 0) |
| 1175 | seg_freed++; | 1176 | seg_freed++; |
