summaryrefslogtreecommitdiffstats
path: root/block/blk-map.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2020-08-27 17:37:46 +0200
committerJens Axboe <axboe@kernel.dk>2020-09-01 16:49:25 -0600
commit7b63c052a580d7d5ed83a6e2a327e85881fa679a (patch)
tree989730afd350f66d4192d0e927a7dee012d13a79 /block/blk-map.c
parentf3256075ba49d80835b601bfbff350a2140b2924 (diff)
block: remove __blk_rq_unmap_user
Open code __blk_rq_unmap_user in the two callers. Both never pass a NULL bio, and one of them can use an existing local variable instead of the bio flag. 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.c29
1 files changed, 11 insertions, 18 deletions
diff --git a/block/blk-map.c b/block/blk-map.c
index 51e6195f878d..10de4809edf9 100644
--- a/block/blk-map.c
+++ b/block/blk-map.c
@@ -558,20 +558,6 @@ int blk_rq_append_bio(struct request *rq, struct bio **bio)
}
EXPORT_SYMBOL(blk_rq_append_bio);
-static int __blk_rq_unmap_user(struct bio *bio)
-{
- int ret = 0;
-
- if (bio) {
- if (bio_flagged(bio, BIO_USER_MAPPED))
- bio_unmap_user(bio);
- else
- ret = bio_uncopy_user(bio);
- }
-
- return ret;
-}
-
static int __blk_rq_map_user_iov(struct request *rq,
struct rq_map_data *map_data, struct iov_iter *iter,
gfp_t gfp_mask, bool copy)
@@ -599,7 +585,10 @@ static int __blk_rq_map_user_iov(struct request *rq,
*/
ret = blk_rq_append_bio(rq, &bio);
if (ret) {
- __blk_rq_unmap_user(orig_bio);
+ if (copy)
+ bio_uncopy_user(orig_bio);
+ else
+ bio_unmap_user(orig_bio);
return ret;
}
bio_get(bio);
@@ -701,9 +690,13 @@ int blk_rq_unmap_user(struct bio *bio)
if (unlikely(bio_flagged(bio, BIO_BOUNCED)))
mapped_bio = bio->bi_private;
- ret2 = __blk_rq_unmap_user(mapped_bio);
- if (ret2 && !ret)
- ret = ret2;
+ if (bio_flagged(mapped_bio, BIO_USER_MAPPED)) {
+ bio_unmap_user(mapped_bio);
+ } else {
+ ret2 = bio_uncopy_user(mapped_bio);
+ if (ret2 && !ret)
+ ret = ret2;
+ }
mapped_bio = bio;
bio = bio->bi_next;