diff options
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_aops.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c index c2e30eea74dc..d13fc7391e8b 100644 --- a/fs/xfs/linux-2.6/xfs_aops.c +++ b/fs/xfs/linux-2.6/xfs_aops.c | |||
| @@ -412,8 +412,9 @@ xfs_end_bio( | |||
| 412 | 412 | ||
| 413 | STATIC void | 413 | STATIC void |
| 414 | xfs_submit_ioend_bio( | 414 | xfs_submit_ioend_bio( |
| 415 | xfs_ioend_t *ioend, | 415 | struct writeback_control *wbc, |
| 416 | struct bio *bio) | 416 | xfs_ioend_t *ioend, |
| 417 | struct bio *bio) | ||
| 417 | { | 418 | { |
| 418 | atomic_inc(&ioend->io_remaining); | 419 | atomic_inc(&ioend->io_remaining); |
| 419 | bio->bi_private = ioend; | 420 | bio->bi_private = ioend; |
| @@ -426,7 +427,8 @@ xfs_submit_ioend_bio( | |||
| 426 | if (xfs_ioend_new_eof(ioend)) | 427 | if (xfs_ioend_new_eof(ioend)) |
| 427 | xfs_mark_inode_dirty_sync(XFS_I(ioend->io_inode)); | 428 | xfs_mark_inode_dirty_sync(XFS_I(ioend->io_inode)); |
| 428 | 429 | ||
| 429 | submit_bio(WRITE, bio); | 430 | submit_bio(wbc->sync_mode == WB_SYNC_ALL ? |
| 431 | WRITE_SYNC_PLUG : WRITE, bio); | ||
| 430 | ASSERT(!bio_flagged(bio, BIO_EOPNOTSUPP)); | 432 | ASSERT(!bio_flagged(bio, BIO_EOPNOTSUPP)); |
| 431 | bio_put(bio); | 433 | bio_put(bio); |
| 432 | } | 434 | } |
| @@ -505,6 +507,7 @@ static inline int bio_add_buffer(struct bio *bio, struct buffer_head *bh) | |||
| 505 | */ | 507 | */ |
| 506 | STATIC void | 508 | STATIC void |
| 507 | xfs_submit_ioend( | 509 | xfs_submit_ioend( |
| 510 | struct writeback_control *wbc, | ||
| 508 | xfs_ioend_t *ioend) | 511 | xfs_ioend_t *ioend) |
| 509 | { | 512 | { |
| 510 | xfs_ioend_t *head = ioend; | 513 | xfs_ioend_t *head = ioend; |
| @@ -533,19 +536,19 @@ xfs_submit_ioend( | |||
| 533 | retry: | 536 | retry: |
| 534 | bio = xfs_alloc_ioend_bio(bh); | 537 | bio = xfs_alloc_ioend_bio(bh); |
| 535 | } else if (bh->b_blocknr != lastblock + 1) { | 538 | } else if (bh->b_blocknr != lastblock + 1) { |
| 536 | xfs_submit_ioend_bio(ioend, bio); | 539 | xfs_submit_ioend_bio(wbc, ioend, bio); |
| 537 | goto retry; | 540 | goto retry; |
| 538 | } | 541 | } |
| 539 | 542 | ||
| 540 | if (bio_add_buffer(bio, bh) != bh->b_size) { | 543 | if (bio_add_buffer(bio, bh) != bh->b_size) { |
| 541 | xfs_submit_ioend_bio(ioend, bio); | 544 | xfs_submit_ioend_bio(wbc, ioend, bio); |
| 542 | goto retry; | 545 | goto retry; |
| 543 | } | 546 | } |
| 544 | 547 | ||
| 545 | lastblock = bh->b_blocknr; | 548 | lastblock = bh->b_blocknr; |
| 546 | } | 549 | } |
| 547 | if (bio) | 550 | if (bio) |
| 548 | xfs_submit_ioend_bio(ioend, bio); | 551 | xfs_submit_ioend_bio(wbc, ioend, bio); |
| 549 | xfs_finish_ioend(ioend, 0); | 552 | xfs_finish_ioend(ioend, 0); |
| 550 | } while ((ioend = next) != NULL); | 553 | } while ((ioend = next) != NULL); |
| 551 | } | 554 | } |
| @@ -1198,7 +1201,7 @@ xfs_page_state_convert( | |||
| 1198 | } | 1201 | } |
| 1199 | 1202 | ||
| 1200 | if (iohead) | 1203 | if (iohead) |
| 1201 | xfs_submit_ioend(iohead); | 1204 | xfs_submit_ioend(wbc, iohead); |
| 1202 | 1205 | ||
| 1203 | return page_dirty; | 1206 | return page_dirty; |
| 1204 | 1207 | ||
