Commit caa4b024 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe

blk-map: call blk_queue_bounce from blk_rq_append_bio

This makes moves the knowledge about bouncing out of the callers into the
block core (just like we do for the normal I/O path), and allows to unexport
blk_queue_bounce.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent e442cbf9
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
*/ */
int blk_rq_append_bio(struct request *rq, struct bio *bio) int blk_rq_append_bio(struct request *rq, struct bio *bio)
{ {
blk_queue_bounce(rq->q, &bio);
if (!rq->bio) { if (!rq->bio) {
blk_rq_bio_prep(rq->q, rq, bio); blk_rq_bio_prep(rq->q, rq, bio);
} else { } else {
...@@ -72,15 +74,13 @@ static int __blk_rq_map_user_iov(struct request *rq, ...@@ -72,15 +74,13 @@ static int __blk_rq_map_user_iov(struct request *rq,
map_data->offset += bio->bi_iter.bi_size; map_data->offset += bio->bi_iter.bi_size;
orig_bio = bio; orig_bio = bio;
blk_queue_bounce(q, &bio);
/* /*
* We link the bounce buffer in and could have to traverse it * We link the bounce buffer in and could have to traverse it
* later so we have to get a ref to prevent it from being freed * later so we have to get a ref to prevent it from being freed
*/ */
bio_get(bio);
ret = blk_rq_append_bio(rq, bio); ret = blk_rq_append_bio(rq, bio);
bio_get(bio);
if (ret) { if (ret) {
bio_endio(bio); bio_endio(bio);
__blk_rq_unmap_user(orig_bio); __blk_rq_unmap_user(orig_bio);
...@@ -249,7 +249,6 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf, ...@@ -249,7 +249,6 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
return ret; return ret;
} }
blk_queue_bounce(q, &rq->bio);
return 0; return 0;
} }
EXPORT_SYMBOL(blk_rq_map_kern); EXPORT_SYMBOL(blk_rq_map_kern);
...@@ -284,5 +284,3 @@ void blk_queue_bounce(struct request_queue *q, struct bio **bio_orig) ...@@ -284,5 +284,3 @@ void blk_queue_bounce(struct request_queue *q, struct bio **bio_orig)
*/ */
__blk_queue_bounce(q, bio_orig, pool); __blk_queue_bounce(q, bio_orig, pool);
} }
EXPORT_SYMBOL(blk_queue_bounce);
...@@ -1576,10 +1576,7 @@ static struct request *_make_request(struct request_queue *q, bool has_write, ...@@ -1576,10 +1576,7 @@ static struct request *_make_request(struct request_queue *q, bool has_write,
return req; return req;
for_each_bio(bio) { for_each_bio(bio) {
struct bio *bounce_bio = bio; ret = blk_rq_append_bio(req, bio);
blk_queue_bounce(req->q, &bounce_bio);
ret = blk_rq_append_bio(req, bounce_bio);
if (ret) if (ret)
return ERR_PTR(ret); return ERR_PTR(ret);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment