diff options
| author | Kent Overstreet <kmo@daterainc.com> | 2013-08-07 17:24:32 -0400 |
|---|---|---|
| committer | Kent Overstreet <kmo@daterainc.com> | 2013-11-24 01:33:49 -0500 |
| commit | a4ad39b1d10584dfcfcfb0d510faab2c7f034399 (patch) | |
| tree | a0747f9978fceb202975f43f15ed4489c6600894 /drivers | |
| parent | 75d5d8156500cd3833d66806889372e294af514d (diff) | |
block: Convert bio_iovec() to bvec_iter
For immutable biovecs, we'll be introducing a new bio_iovec() that uses
our new bvec iterator to construct a biovec, taking into account
bvec_iter->bi_bvec_done - this patch updates existing users for the new
usage.
Some of the existing users really do need a pointer into the bvec array
- those uses are all going to be removed, but we'll need the
functionality from immutable to remove them - so for now rename the
existing bio_iovec() -> __bio_iovec(), and it'll be removed in a couple
patches.
Signed-off-by: Kent Overstreet <kmo@daterainc.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: "Ed L. Cashin" <ecashin@coraid.com>
Cc: Alasdair Kergon <agk@redhat.com>
Cc: dm-devel@redhat.com
Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/block/aoe/aoecmd.c | 2 | ||||
| -rw-r--r-- | drivers/md/bcache/io.c | 13 | ||||
| -rw-r--r-- | drivers/md/dm-verity.c | 2 | ||||
| -rw-r--r-- | drivers/scsi/sd.c | 2 |
4 files changed, 10 insertions, 9 deletions
diff --git a/drivers/block/aoe/aoecmd.c b/drivers/block/aoe/aoecmd.c index 877ba119b3f8..77c24ab1898a 100644 --- a/drivers/block/aoe/aoecmd.c +++ b/drivers/block/aoe/aoecmd.c | |||
| @@ -932,7 +932,7 @@ bufinit(struct buf *buf, struct request *rq, struct bio *bio) | |||
| 932 | buf->resid = bio->bi_iter.bi_size; | 932 | buf->resid = bio->bi_iter.bi_size; |
| 933 | buf->sector = bio->bi_iter.bi_sector; | 933 | buf->sector = bio->bi_iter.bi_sector; |
| 934 | bio_pageinc(bio); | 934 | bio_pageinc(bio); |
| 935 | buf->bv = bio_iovec(bio); | 935 | buf->bv = __bio_iovec(bio); |
| 936 | buf->bv_resid = buf->bv->bv_len; | 936 | buf->bv_resid = buf->bv->bv_len; |
| 937 | WARN_ON(buf->bv_resid == 0); | 937 | WARN_ON(buf->bv_resid == 0); |
| 938 | } | 938 | } |
diff --git a/drivers/md/bcache/io.c b/drivers/md/bcache/io.c index cc4ba2da5fb6..dc44f0689eb7 100644 --- a/drivers/md/bcache/io.c +++ b/drivers/md/bcache/io.c | |||
| @@ -22,11 +22,12 @@ static void bch_bi_idx_hack_endio(struct bio *bio, int error) | |||
| 22 | static void bch_generic_make_request_hack(struct bio *bio) | 22 | static void bch_generic_make_request_hack(struct bio *bio) |
| 23 | { | 23 | { |
| 24 | if (bio->bi_iter.bi_idx) { | 24 | if (bio->bi_iter.bi_idx) { |
| 25 | int i; | ||
| 26 | struct bio_vec *bv; | ||
| 25 | struct bio *clone = bio_alloc(GFP_NOIO, bio_segments(bio)); | 27 | struct bio *clone = bio_alloc(GFP_NOIO, bio_segments(bio)); |
| 26 | 28 | ||
| 27 | memcpy(clone->bi_io_vec, | 29 | bio_for_each_segment(bv, bio, i) |
| 28 | bio_iovec(bio), | 30 | clone->bi_io_vec[clone->bi_vcnt++] = *bv; |
| 29 | bio_segments(bio) * sizeof(struct bio_vec)); | ||
| 30 | 31 | ||
| 31 | clone->bi_iter.bi_sector = bio->bi_iter.bi_sector; | 32 | clone->bi_iter.bi_sector = bio->bi_iter.bi_sector; |
| 32 | clone->bi_bdev = bio->bi_bdev; | 33 | clone->bi_bdev = bio->bi_bdev; |
| @@ -97,7 +98,7 @@ struct bio *bch_bio_split(struct bio *bio, int sectors, | |||
| 97 | if (!ret) | 98 | if (!ret) |
| 98 | return NULL; | 99 | return NULL; |
| 99 | 100 | ||
| 100 | memcpy(ret->bi_io_vec, bio_iovec(bio), | 101 | memcpy(ret->bi_io_vec, __bio_iovec(bio), |
| 101 | sizeof(struct bio_vec) * vcnt); | 102 | sizeof(struct bio_vec) * vcnt); |
| 102 | 103 | ||
| 103 | break; | 104 | break; |
| @@ -106,7 +107,7 @@ struct bio *bch_bio_split(struct bio *bio, int sectors, | |||
| 106 | if (!ret) | 107 | if (!ret) |
| 107 | return NULL; | 108 | return NULL; |
| 108 | 109 | ||
| 109 | memcpy(ret->bi_io_vec, bio_iovec(bio), | 110 | memcpy(ret->bi_io_vec, __bio_iovec(bio), |
| 110 | sizeof(struct bio_vec) * vcnt); | 111 | sizeof(struct bio_vec) * vcnt); |
| 111 | 112 | ||
| 112 | ret->bi_io_vec[vcnt - 1].bv_len = nbytes; | 113 | ret->bi_io_vec[vcnt - 1].bv_len = nbytes; |
| @@ -182,7 +183,7 @@ static unsigned bch_bio_max_sectors(struct bio *bio) | |||
| 182 | ret = min(ret, queue_max_sectors(q)); | 183 | ret = min(ret, queue_max_sectors(q)); |
| 183 | 184 | ||
| 184 | WARN_ON(!ret); | 185 | WARN_ON(!ret); |
| 185 | ret = max_t(int, ret, bio_iovec(bio)->bv_len >> 9); | 186 | ret = max_t(int, ret, bio_iovec(bio).bv_len >> 9); |
| 186 | 187 | ||
| 187 | return ret; | 188 | return ret; |
| 188 | } | 189 | } |
diff --git a/drivers/md/dm-verity.c b/drivers/md/dm-verity.c index 132b3154d466..5392135924ca 100644 --- a/drivers/md/dm-verity.c +++ b/drivers/md/dm-verity.c | |||
| @@ -524,7 +524,7 @@ static int verity_map(struct dm_target *ti, struct bio *bio) | |||
| 524 | io->io_vec = io->io_vec_inline; | 524 | io->io_vec = io->io_vec_inline; |
| 525 | else | 525 | else |
| 526 | io->io_vec = mempool_alloc(v->vec_mempool, GFP_NOIO); | 526 | io->io_vec = mempool_alloc(v->vec_mempool, GFP_NOIO); |
| 527 | memcpy(io->io_vec, bio_iovec(bio), | 527 | memcpy(io->io_vec, __bio_iovec(bio), |
| 528 | io->io_vec_size * sizeof(struct bio_vec)); | 528 | io->io_vec_size * sizeof(struct bio_vec)); |
| 529 | 529 | ||
| 530 | verity_submit_prefetch(v, io); | 530 | verity_submit_prefetch(v, io); |
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c index e6c4bff04339..200d6bc81240 100644 --- a/drivers/scsi/sd.c +++ b/drivers/scsi/sd.c | |||
| @@ -801,7 +801,7 @@ static int sd_setup_write_same_cmnd(struct scsi_device *sdp, struct request *rq) | |||
| 801 | if (sdkp->device->no_write_same) | 801 | if (sdkp->device->no_write_same) |
| 802 | return BLKPREP_KILL; | 802 | return BLKPREP_KILL; |
| 803 | 803 | ||
| 804 | BUG_ON(bio_offset(bio) || bio_iovec(bio)->bv_len != sdp->sector_size); | 804 | BUG_ON(bio_offset(bio) || bio_iovec(bio).bv_len != sdp->sector_size); |
| 805 | 805 | ||
| 806 | sector >>= ilog2(sdp->sector_size) - 9; | 806 | sector >>= ilog2(sdp->sector_size) - 9; |
| 807 | nr_sectors >>= ilog2(sdp->sector_size) - 9; | 807 | nr_sectors >>= ilog2(sdp->sector_size) - 9; |
