diff options
Diffstat (limited to 'mm/page-writeback.c')
| -rw-r--r-- | mm/page-writeback.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 632b46479c94..31f698862420 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@ -1040,11 +1040,17 @@ static int __writepage(struct page *page, struct writeback_control *wbc,  int generic_writepages(struct address_space *mapping,  		       struct writeback_control *wbc)  { +	struct blk_plug plug; +	int ret; +  	/* deal with chardevs and other special file */  	if (!mapping->a_ops->writepage)  		return 0; -	return write_cache_pages(mapping, wbc, __writepage, mapping); +	blk_start_plug(&plug); +	ret = write_cache_pages(mapping, wbc, __writepage, mapping); +	blk_finish_plug(&plug); +	return ret;  }  EXPORT_SYMBOL(generic_writepages); @@ -1251,7 +1257,7 @@ int set_page_dirty_lock(struct page *page)  {  	int ret; -	lock_page_nosync(page); +	lock_page(page);  	ret = set_page_dirty(page);  	unlock_page(page);  	return ret;  | 
