diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 1254986dd6eb1f3f59d05966897c608abc869198..7c0f6bdf817d4370b74b36de9096fad73c75fbd4 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -309,7 +309,7 @@ static void __f2fs_submit_merged_bio(struct f2fs_sb_info *sbi, if (type >= META_FLUSH) { io->fio.type = META_FLUSH; io->fio.op = REQ_OP_WRITE; - io->fio.op_flags = REQ_META | REQ_PRIO; + io->fio.op_flags = REQ_META | REQ_PRIO | REQ_SYNC; if (!test_opt(sbi, NOBARRIER)) io->fio.op_flags |= REQ_PREFLUSH | REQ_FUA; } diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index 6e1c8cf757491ca9c273ee6ae453c3ffa4dc1f22..de31030b5041c4e618508f8478c7a5660de7a1de 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -446,7 +446,7 @@ static int __submit_flush_wait(struct f2fs_sb_info *sbi, struct bio *bio = f2fs_bio_alloc(0); int ret; - bio->bi_opf = REQ_OP_WRITE | REQ_PREFLUSH; + bio->bi_opf = REQ_OP_WRITE | REQ_SYNC | REQ_PREFLUSH; bio->bi_bdev = bdev; ret = submit_bio_wait(bio); bio_put(bio); diff --git a/fs/f2fs/super.c b/fs/f2fs/super.c index 9a14b25903378ac351b8129a06b94e7d868a6017..83355ec4a92cdeb86d4be8d4630e01e7b0c96a28 100644 --- a/fs/f2fs/super.c +++ b/fs/f2fs/super.c @@ -1325,7 +1325,7 @@ static int __f2fs_commit_super(struct buffer_head *bh, unlock_buffer(bh); /* it's rare case, we can do fua all the time */ - return __sync_dirty_buffer(bh, REQ_PREFLUSH | REQ_FUA); + return __sync_dirty_buffer(bh, REQ_SYNC | REQ_PREFLUSH | REQ_FUA); } static inline bool sanity_check_area_boundary(struct f2fs_sb_info *sbi,