diff options
author | Christoph Hellwig <hch@lst.de> | 2017-06-27 12:13:21 -0600 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2017-06-27 12:13:21 -0600 |
commit | caa4b02476e31fc7933d2138062f7f355d3cd8f7 (patch) | |
tree | 7905a4ca4096ed76d0a8d36b79ef72bf7771e358 /block/blk-map.c | |
parent | e442cbf910c71fba5926cf757dd7f8fcce22fc5f (diff) | |
download | lwn-caa4b02476e31fc7933d2138062f7f355d3cd8f7.tar.gz lwn-caa4b02476e31fc7933d2138062f7f355d3cd8f7.zip |
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: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-map.c')
-rw-r--r-- | block/blk-map.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/block/blk-map.c b/block/blk-map.c index 3b5cb863318f..2547016aa7aa 100644 --- a/block/blk-map.c +++ b/block/blk-map.c @@ -16,6 +16,8 @@ */ int blk_rq_append_bio(struct request *rq, struct bio *bio) { + blk_queue_bounce(rq->q, &bio); + if (!rq->bio) { blk_rq_bio_prep(rq->q, rq, bio); } else { @@ -72,15 +74,13 @@ static int __blk_rq_map_user_iov(struct request *rq, map_data->offset += bio->bi_iter.bi_size; orig_bio = bio; - blk_queue_bounce(q, &bio); /* * 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 */ - bio_get(bio); - ret = blk_rq_append_bio(rq, bio); + bio_get(bio); if (ret) { bio_endio(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, return ret; } - blk_queue_bounce(q, &rq->bio); return 0; } EXPORT_SYMBOL(blk_rq_map_kern); |