|
@@ -265,6 +265,7 @@ static int f2fs_write_meta_pages(struct address_space *mapping,
|
|
|
struct writeback_control *wbc)
|
|
|
{
|
|
|
struct f2fs_sb_info *sbi = F2FS_M_SB(mapping);
|
|
|
+ struct blk_plug plug;
|
|
|
long diff, written;
|
|
|
|
|
|
/* collect a number of dirty meta pages and write together */
|
|
@@ -277,7 +278,9 @@ static int f2fs_write_meta_pages(struct address_space *mapping,
|
|
|
/* if mounting is failed, skip writing node pages */
|
|
|
mutex_lock(&sbi->cp_mutex);
|
|
|
diff = nr_pages_to_write(sbi, META, wbc);
|
|
|
+ blk_start_plug(&plug);
|
|
|
written = sync_meta_pages(sbi, META, wbc->nr_to_write);
|
|
|
+ blk_finish_plug(&plug);
|
|
|
mutex_unlock(&sbi->cp_mutex);
|
|
|
wbc->nr_to_write = max((long)0, wbc->nr_to_write - written - diff);
|
|
|
return 0;
|
|
@@ -899,8 +902,11 @@ static int block_operations(struct f2fs_sb_info *sbi)
|
|
|
.nr_to_write = LONG_MAX,
|
|
|
.for_reclaim = 0,
|
|
|
};
|
|
|
+ struct blk_plug plug;
|
|
|
int err = 0;
|
|
|
|
|
|
+ blk_start_plug(&plug);
|
|
|
+
|
|
|
retry_flush_dents:
|
|
|
f2fs_lock_all(sbi);
|
|
|
/* write all the dirty dentry pages */
|
|
@@ -937,6 +943,7 @@ retry_flush_nodes:
|
|
|
goto retry_flush_nodes;
|
|
|
}
|
|
|
out:
|
|
|
+ blk_finish_plug(&plug);
|
|
|
return err;
|
|
|
}
|
|
|
|