X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=fs%2Ff2fs%2Fcheckpoint.c;h=2a5999d865b25f9f7d1b7a8631601c3185170f40;hb=e234088758fca3a669ebb1a02d8bf7bf60f0e4ff;hp=d80882763ffd94c5a77f9561096d36c0486970a7;hpb=9076a75f8e0f23ab64e2f34eb6be144e81f00a3e;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c index d808827..2a5999d 100644 --- a/fs/f2fs/checkpoint.c +++ b/fs/f2fs/checkpoint.c @@ -757,8 +757,15 @@ static void do_checkpoint(struct f2fs_sb_info *sbi, bool is_umount) f2fs_put_page(cp_page, 1); /* wait for previous submitted node/meta pages writeback */ - while (get_pages(sbi, F2FS_WRITEBACK)) - congestion_wait(BLK_RW_ASYNC, HZ / 50); + sbi->cp_task = current; + while (get_pages(sbi, F2FS_WRITEBACK)) { + set_current_state(TASK_UNINTERRUPTIBLE); + if (!get_pages(sbi, F2FS_WRITEBACK)) + break; + io_schedule(); + } + __set_current_state(TASK_RUNNING); + sbi->cp_task = NULL; filemap_fdatawait_range(sbi->node_inode->i_mapping, 0, LONG_MAX); filemap_fdatawait_range(sbi->meta_inode->i_mapping, 0, LONG_MAX);