diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-08 13:13:35 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-05-08 13:13:35 -0400 |
commit | 4de13d7aa8f4d02f4dc99d4609575659f92b3c5a (patch) | |
tree | 3bc9729eabe79c6164cd29a5d605000bc82bf837 /fs/direct-io.c | |
parent | 5af43c24ca59a448c9312dd4a4a51d27ec3b9a73 (diff) | |
parent | b8d4a5bf6a049303a29a3275f463f09a490b50ea (diff) |
Merge branch 'for-3.10/core' of git://git.kernel.dk/linux-block
Pull block core updates from Jens Axboe:
- Major bit is Kents prep work for immutable bio vecs.
- Stable candidate fix for a scheduling-while-atomic in the queue
bypass operation.
- Fix for the hang on exceeded rq->datalen 32-bit unsigned when merging
discard bios.
- Tejuns changes to convert the writeback thread pool to the generic
workqueue mechanism.
- Runtime PM framework, SCSI patches exists on top of these in James'
tree.
- A few random fixes.
* 'for-3.10/core' of git://git.kernel.dk/linux-block: (40 commits)
relay: move remove_buf_file inside relay_close_buf
partitions/efi.c: replace useless kzalloc's by kmalloc's
fs/block_dev.c: fix iov_shorten() criteria in blkdev_aio_read()
block: fix max discard sectors limit
blkcg: fix "scheduling while atomic" in blk_queue_bypass_start
Documentation: cfq-iosched: update documentation help for cfq tunables
writeback: expose the bdi_wq workqueue
writeback: replace custom worker pool implementation with unbound workqueue
writeback: remove unused bdi_pending_list
aoe: Fix unitialized var usage
bio-integrity: Add explicit field for owner of bip_buf
block: Add an explicit bio flag for bios that own their bvec
block: Add bio_alloc_pages()
block: Convert some code to bio_for_each_segment_all()
block: Add bio_for_each_segment_all()
bounce: Refactor __blk_queue_bounce to not use bi_io_vec
raid1: use bio_copy_data()
pktcdvd: Use bio_reset() in disabled code to kill bi_idx usage
pktcdvd: use bio_copy_data()
block: Add bio_copy_data()
...
Diffstat (limited to 'fs/direct-io.c')
-rw-r--r-- | fs/direct-io.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/direct-io.c b/fs/direct-io.c index 51d16e067d68..7ab90f5081ee 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c | |||
@@ -442,8 +442,8 @@ static struct bio *dio_await_one(struct dio *dio) | |||
442 | static int dio_bio_complete(struct dio *dio, struct bio *bio) | 442 | static int dio_bio_complete(struct dio *dio, struct bio *bio) |
443 | { | 443 | { |
444 | const int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags); | 444 | const int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags); |
445 | struct bio_vec *bvec = bio->bi_io_vec; | 445 | struct bio_vec *bvec; |
446 | int page_no; | 446 | unsigned i; |
447 | 447 | ||
448 | if (!uptodate) | 448 | if (!uptodate) |
449 | dio->io_error = -EIO; | 449 | dio->io_error = -EIO; |
@@ -451,8 +451,8 @@ static int dio_bio_complete(struct dio *dio, struct bio *bio) | |||
451 | if (dio->is_async && dio->rw == READ) { | 451 | if (dio->is_async && dio->rw == READ) { |
452 | bio_check_pages_dirty(bio); /* transfers ownership */ | 452 | bio_check_pages_dirty(bio); /* transfers ownership */ |
453 | } else { | 453 | } else { |
454 | for (page_no = 0; page_no < bio->bi_vcnt; page_no++) { | 454 | bio_for_each_segment_all(bvec, bio, i) { |
455 | struct page *page = bvec[page_no].bv_page; | 455 | struct page *page = bvec->bv_page; |
456 | 456 | ||
457 | if (dio->rw == READ && !PageCompound(page)) | 457 | if (dio->rw == READ && !PageCompound(page)) |
458 | set_page_dirty_lock(page); | 458 | set_page_dirty_lock(page); |