diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 19c3c2180cca01e83adce524c91c33c3a8f3cc44..abb45f5653f96ac6976dc9b8787c71f1eb82f022 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -1981,6 +1981,13 @@ static int f2fs_write_cache_pages(struct address_space *mapping, struct page *page = pvec.pages[i]; bool submitted = false; + /* give a priority to WB_SYNC threads */ + if (atomic_read(&F2FS_M_SB(mapping)->wb_sync_req) && + wbc->sync_mode == WB_SYNC_NONE) { + done = 1; + break; + } + done_index = page->index; retry_write: lock_page(page); @@ -2035,9 +2042,7 @@ static int f2fs_write_cache_pages(struct address_space *mapping, last_idx = page->index; } - /* give a priority to WB_SYNC threads */ - if ((atomic_read(&F2FS_M_SB(mapping)->wb_sync_req) || - --wbc->nr_to_write <= 0) && + if (--wbc->nr_to_write <= 0 && wbc->sync_mode == WB_SYNC_NONE) { done = 1; break;