block: merge __bio_map_user_iov into bio_map_user_iov
authorChristoph Hellwig <hch@lst.de>
Sun, 18 Jan 2015 15:16:33 +0000 (16:16 +0100)
committerJens Axboe <axboe@fb.com>
Thu, 5 Feb 2015 16:30:43 +0000 (09:30 -0700)
And also remove the unused bdev argument.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
block/bio.c
block/blk-map.c
include/linux/bio.h

index a69a9c9e7c93899dc1e8ce4d9e6f577a453c5c0c..0723d4ce85894f28e252711b5c7b9336eed1cebd 100644 (file)
@@ -1244,10 +1244,18 @@ out_bmd:
        return ERR_PTR(ret);
 }
 
-static struct bio *__bio_map_user_iov(struct request_queue *q,
-                                     struct block_device *bdev,
-                                     const struct iov_iter *iter,
-                                     gfp_t gfp_mask)
+/**
+ *     bio_map_user_iov - map user iovec into bio
+ *     @q:             the struct request_queue for the bio
+ *     @iter:          iovec iterator
+ *     @gfp_mask:      memory allocation flags
+ *
+ *     Map the user space address into a bio suitable for io to a block
+ *     device. Returns an error pointer in case of error.
+ */
+struct bio *bio_map_user_iov(struct request_queue *q,
+                            const struct iov_iter *iter,
+                            gfp_t gfp_mask)
 {
        int j;
        int nr_pages = 0;
@@ -1343,8 +1351,15 @@ static struct bio *__bio_map_user_iov(struct request_queue *q,
        if (iter->type & WRITE)
                bio->bi_rw |= REQ_WRITE;
 
-       bio->bi_bdev = bdev;
        bio->bi_flags |= (1 << BIO_USER_MAPPED);
+
+       /*
+        * subtle -- if __bio_map_user() ended up bouncing a bio,
+        * it would normally disappear when its bi_end_io is run.
+        * however, we need it for the unmap, so grab an extra
+        * reference to it
+        */
+       bio_get(bio);
        return bio;
 
  out_unmap:
@@ -1359,37 +1374,6 @@ static struct bio *__bio_map_user_iov(struct request_queue *q,
        return ERR_PTR(ret);
 }
 
-/**
- *     bio_map_user_iov - map user iovec into bio
- *     @q:             the struct request_queue for the bio
- *     @bdev:          destination block device
- *     @iter:          iovec iterator
- *     @gfp_mask:      memory allocation flags
- *
- *     Map the user space address into a bio suitable for io to a block
- *     device. Returns an error pointer in case of error.
- */
-struct bio *bio_map_user_iov(struct request_queue *q, struct block_device *bdev,
-                            const struct iov_iter *iter,
-                            gfp_t gfp_mask)
-{
-       struct bio *bio;
-
-       bio = __bio_map_user_iov(q, bdev, iter, gfp_mask);
-       if (IS_ERR(bio))
-               return bio;
-
-       /*
-        * subtle -- if __bio_map_user() ended up bouncing a bio,
-        * it would normally disappear when its bi_end_io is run.
-        * however, we need it for the unmap, so grab an extra
-        * reference to it
-        */
-       bio_get(bio);
-
-       return bio;
-}
-
 static void __bio_unmap_user(struct bio *bio)
 {
        struct bio_vec *bvec;
index 30e6bb871c5cb12266706113abc485815cb7c809..0f22911f17dc42f8e969c9f69a2d493c7821b16a 100644 (file)
@@ -88,7 +88,7 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
        if (unaligned || (q->dma_pad_mask & iter->count) || map_data)
                bio = bio_copy_user_iov(q, map_data, iter, gfp_mask);
        else
-               bio = bio_map_user_iov(q, NULL, iter, gfp_mask);
+               bio = bio_map_user_iov(q, iter, gfp_mask);
 
        if (IS_ERR(bio))
                return PTR_ERR(bio);
index 0d6105b34ffa14dada3c5be13886ad8fe9b703e2..da3a127c99583ba1c38d9cad1ed35550bb9666ca 100644 (file)
@@ -430,7 +430,6 @@ extern int bio_add_pc_page(struct request_queue *, struct bio *, struct page *,
 extern int bio_get_nr_vecs(struct block_device *);
 struct rq_map_data;
 extern struct bio *bio_map_user_iov(struct request_queue *,
-                                   struct block_device *,
                                    const struct iov_iter *, gfp_t);
 extern void bio_unmap_user(struct bio *);
 extern struct bio *bio_map_kern(struct request_queue *, void *, unsigned int,