diff options
author | NeilBrown <neilb@suse.de> | 2007-09-25 06:35:59 -0400 |
---|---|---|
committer | Jens Axboe <axboe@carl.home.kernel.dk> | 2007-10-10 03:25:56 -0400 |
commit | 5705f7021748a69d84d6567e68e8851dab551464 (patch) | |
tree | 5a6dbc8fc6055c0334f4a97540e36a7844b9c482 /drivers/block/lguest_blk.c | |
parent | 9dfa52831e96194b8649613e3131baa2c109f7dc (diff) |
Introduce rq_for_each_segment replacing rq_for_each_bio
Every usage of rq_for_each_bio wraps a usage of
bio_for_each_segment, so these can be combined into
rq_for_each_segment.
We define "struct req_iterator" to hold the 'bio' and 'index' that
are needed for the double iteration.
Signed-off-by: Neil Brown <neilb@suse.de>
Various compile fixes by me...
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'drivers/block/lguest_blk.c')
-rw-r--r-- | drivers/block/lguest_blk.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/drivers/block/lguest_blk.c b/drivers/block/lguest_blk.c index 160cf14431ac..1e838ae60a60 100644 --- a/drivers/block/lguest_blk.c +++ b/drivers/block/lguest_blk.c | |||
@@ -142,12 +142,11 @@ static irqreturn_t lgb_irq(int irq, void *_bd) | |||
142 | * return the total length. */ | 142 | * return the total length. */ |
143 | static unsigned int req_to_dma(struct request *req, struct lguest_dma *dma) | 143 | static unsigned int req_to_dma(struct request *req, struct lguest_dma *dma) |
144 | { | 144 | { |
145 | unsigned int i = 0, idx, len = 0; | 145 | unsigned int i = 0, len = 0; |
146 | struct bio *bio; | 146 | struct req_iterator iter; |
147 | struct bio_vec *bvec; | ||
147 | 148 | ||
148 | rq_for_each_bio(bio, req) { | 149 | rq_for_each_segment(bvec, req, iter) { |
149 | struct bio_vec *bvec; | ||
150 | bio_for_each_segment(bvec, bio, idx) { | ||
151 | /* We told the block layer not to give us too many. */ | 150 | /* We told the block layer not to give us too many. */ |
152 | BUG_ON(i == LGUEST_MAX_DMA_SECTIONS); | 151 | BUG_ON(i == LGUEST_MAX_DMA_SECTIONS); |
153 | /* If we had a zero-length segment, it would look like | 152 | /* If we had a zero-length segment, it would look like |
@@ -160,7 +159,6 @@ static unsigned int req_to_dma(struct request *req, struct lguest_dma *dma) | |||
160 | dma->len[i] = bvec->bv_len; | 159 | dma->len[i] = bvec->bv_len; |
161 | len += bvec->bv_len; | 160 | len += bvec->bv_len; |
162 | i++; | 161 | i++; |
163 | } | ||
164 | } | 162 | } |
165 | /* If the array isn't full, we mark the end with a 0 length */ | 163 | /* If the array isn't full, we mark the end with a 0 length */ |
166 | if (i < LGUEST_MAX_DMA_SECTIONS) | 164 | if (i < LGUEST_MAX_DMA_SECTIONS) |