.. | .. |
---|
416 | 416 | |
---|
417 | 417 | static void io_submit_add_bh(struct ext4_io_submit *io, |
---|
418 | 418 | struct inode *inode, |
---|
419 | | - struct page *page, |
---|
| 419 | + struct page *pagecache_page, |
---|
| 420 | + struct page *bounce_page, |
---|
420 | 421 | struct buffer_head *bh) |
---|
421 | 422 | { |
---|
422 | 423 | int ret; |
---|
.. | .. |
---|
430 | 431 | io_submit_init_bio(io, bh); |
---|
431 | 432 | io->io_bio->bi_write_hint = inode->i_write_hint; |
---|
432 | 433 | } |
---|
433 | | - ret = bio_add_page(io->io_bio, page, bh->b_size, bh_offset(bh)); |
---|
| 434 | + ret = bio_add_page(io->io_bio, bounce_page ?: pagecache_page, |
---|
| 435 | + bh->b_size, bh_offset(bh)); |
---|
434 | 436 | if (ret != bh->b_size) |
---|
435 | 437 | goto submit_and_retry; |
---|
436 | | - wbc_account_cgroup_owner(io->io_wbc, page, bh->b_size); |
---|
| 438 | + wbc_account_cgroup_owner(io->io_wbc, pagecache_page, bh->b_size); |
---|
437 | 439 | io->io_next_block++; |
---|
438 | 440 | } |
---|
439 | 441 | |
---|
.. | .. |
---|
551 | 553 | do { |
---|
552 | 554 | if (!buffer_async_write(bh)) |
---|
553 | 555 | continue; |
---|
554 | | - io_submit_add_bh(io, inode, |
---|
555 | | - bounce_page ? bounce_page : page, bh); |
---|
| 556 | + io_submit_add_bh(io, inode, page, bounce_page, bh); |
---|
556 | 557 | nr_submitted++; |
---|
557 | 558 | clear_buffer_dirty(bh); |
---|
558 | 559 | } while ((bh = bh->b_this_page) != head); |
---|