|
@@ -1846,6 +1846,7 @@ static int ext4_writepage(struct page *page,
|
|
|
struct buffer_head *page_bufs = NULL;
|
|
|
struct inode *inode = page->mapping->host;
|
|
|
struct ext4_io_submit io_submit;
|
|
|
+ bool keep_towrite = false;
|
|
|
|
|
|
trace_ext4_writepage(page);
|
|
|
size = i_size_read(inode);
|
|
@@ -1876,6 +1877,7 @@ static int ext4_writepage(struct page *page,
|
|
|
unlock_page(page);
|
|
|
return 0;
|
|
|
}
|
|
|
+ keep_towrite = true;
|
|
|
}
|
|
|
|
|
|
if (PageChecked(page) && ext4_should_journal_data(inode))
|
|
@@ -1892,7 +1894,7 @@ static int ext4_writepage(struct page *page,
|
|
|
unlock_page(page);
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
- ret = ext4_bio_write_page(&io_submit, page, len, wbc);
|
|
|
+ ret = ext4_bio_write_page(&io_submit, page, len, wbc, keep_towrite);
|
|
|
ext4_io_submit(&io_submit);
|
|
|
/* Drop io_end reference we got from init */
|
|
|
ext4_put_io_end_defer(io_submit.io_end);
|
|
@@ -1911,7 +1913,7 @@ static int mpage_submit_page(struct mpage_da_data *mpd, struct page *page)
|
|
|
else
|
|
|
len = PAGE_CACHE_SIZE;
|
|
|
clear_page_dirty_for_io(page);
|
|
|
- err = ext4_bio_write_page(&mpd->io_submit, page, len, mpd->wbc);
|
|
|
+ err = ext4_bio_write_page(&mpd->io_submit, page, len, mpd->wbc, false);
|
|
|
if (!err)
|
|
|
mpd->wbc->nr_to_write--;
|
|
|
mpd->first_page++;
|