aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorKent Overstreet <kmo@daterainc.com>2013-08-07 17:24:32 -0400
committerKent Overstreet <kmo@daterainc.com>2013-11-24 01:33:49 -0500
commita4ad39b1d10584dfcfcfb0d510faab2c7f034399 (patch)
treea0747f9978fceb202975f43f15ed4489c6600894 /drivers
parent75d5d8156500cd3833d66806889372e294af514d (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.c2
-rw-r--r--drivers/md/bcache/io.c13
-rw-r--r--drivers/md/dm-verity.c2
-rw-r--r--drivers/scsi/sd.c2
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)
22static void bch_generic_make_request_hack(struct bio *bio) 22static 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;