|
@@ -3368,6 +3368,8 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode,
|
|
|
|
|
|
while (cur <= end) {
|
|
|
u64 em_end;
|
|
|
+ unsigned long max_nr;
|
|
|
+
|
|
|
if (cur >= i_size) {
|
|
|
if (tree->ops && tree->ops->writepage_end_io_hook)
|
|
|
tree->ops->writepage_end_io_hook(page, cur,
|
|
@@ -3423,32 +3425,23 @@ static noinline_for_stack int __extent_writepage_io(struct inode *inode,
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- if (tree->ops && tree->ops->writepage_io_hook) {
|
|
|
- ret = tree->ops->writepage_io_hook(page, cur,
|
|
|
- cur + iosize - 1);
|
|
|
- } else {
|
|
|
- ret = 0;
|
|
|
+ max_nr = (i_size >> PAGE_SHIFT) + 1;
|
|
|
+
|
|
|
+ set_range_writeback(tree, cur, cur + iosize - 1);
|
|
|
+ if (!PageWriteback(page)) {
|
|
|
+ btrfs_err(BTRFS_I(inode)->root->fs_info,
|
|
|
+ "page %lu not writeback, cur %llu end %llu",
|
|
|
+ page->index, cur, end);
|
|
|
}
|
|
|
- if (ret) {
|
|
|
- SetPageError(page);
|
|
|
- } else {
|
|
|
- unsigned long max_nr = (i_size >> PAGE_SHIFT) + 1;
|
|
|
|
|
|
- set_range_writeback(tree, cur, cur + iosize - 1);
|
|
|
- if (!PageWriteback(page)) {
|
|
|
- btrfs_err(BTRFS_I(inode)->root->fs_info,
|
|
|
- "page %lu not writeback, cur %llu end %llu",
|
|
|
- page->index, cur, end);
|
|
|
- }
|
|
|
+ ret = submit_extent_page(write_flags, tree, wbc, page,
|
|
|
+ sector, iosize, pg_offset,
|
|
|
+ bdev, &epd->bio, max_nr,
|
|
|
+ end_bio_extent_writepage,
|
|
|
+ 0, 0, 0, false);
|
|
|
+ if (ret)
|
|
|
+ SetPageError(page);
|
|
|
|
|
|
- ret = submit_extent_page(write_flags, tree, wbc, page,
|
|
|
- sector, iosize, pg_offset,
|
|
|
- bdev, &epd->bio, max_nr,
|
|
|
- end_bio_extent_writepage,
|
|
|
- 0, 0, 0, false);
|
|
|
- if (ret)
|
|
|
- SetPageError(page);
|
|
|
- }
|
|
|
cur = cur + iosize;
|
|
|
pg_offset += iosize;
|
|
|
nr++;
|