diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index a7f0e5932642..d4b787b00c5a 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -1044,6 +1044,9 @@ static void __submit_discard_cmd(struct f2fs_sb_info *sbi, if (dc->state != D_PREP) return; + if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) + return; + trace_f2fs_issue_discard(dc->bdev, dc->start, dc->len); dc->error = __blkdev_issue_discard(dc->bdev, @@ -1475,6 +1478,10 @@ static int issue_discard_thread(void *data) continue; if (kthread_should_stop()) return 0; + if (is_sbi_flag_set(sbi, SBI_NEED_FSCK)) { + wait_ms = dpolicy.max_interval; + continue; + } if (dcc->discard_wake) dcc->discard_wake = 0;