perf tools: Pass build_id object to dso__build_id_equal()
[linux-2.6-microblaze.git] / block / blk-map.c
index b72c361..6e80489 100644 (file)
@@ -257,6 +257,7 @@ out_bmd:
 static struct bio *bio_map_user_iov(struct request_queue *q,
                struct iov_iter *iter, gfp_t gfp_mask)
 {
+       unsigned int max_sectors = queue_max_hw_sectors(q);
        int j;
        struct bio *bio;
        int ret;
@@ -294,8 +295,8 @@ static struct bio *bio_map_user_iov(struct request_queue *q,
                                if (n > bytes)
                                        n = bytes;
 
-                               if (!__bio_add_pc_page(q, bio, page, n, offs,
-                                               &same_page)) {
+                               if (!bio_add_hw_page(q, bio, page, n, offs,
+                                                    max_sectors, &same_page)) {
                                        if (same_page)
                                                put_page(page);
                                        break;
@@ -549,6 +550,7 @@ int blk_rq_append_bio(struct request *rq, struct bio **bio)
                rq->biotail->bi_next = *bio;
                rq->biotail = *bio;
                rq->__data_len += (*bio)->bi_iter.bi_size;
+               bio_crypt_free_ctx(*bio);
        }
 
        return 0;
@@ -654,8 +656,6 @@ int blk_rq_map_user_iov(struct request_queue *q, struct request *rq,
                        bio = rq->bio;
        } while (iov_iter_count(&i));
 
-       if (!bio_flagged(bio, BIO_USER_MAPPED))
-               rq->rq_flags |= RQF_COPY_USER;
        return 0;
 
 unmap_rq:
@@ -731,7 +731,6 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
 {
        int reading = rq_data_dir(rq) == READ;
        unsigned long addr = (unsigned long) kbuf;
-       int do_copy = 0;
        struct bio *bio, *orig_bio;
        int ret;
 
@@ -740,8 +739,7 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
        if (!len || !kbuf)
                return -EINVAL;
 
-       do_copy = !blk_rq_aligned(q, addr, len) || object_is_on_stack(kbuf);
-       if (do_copy)
+       if (!blk_rq_aligned(q, addr, len) || object_is_on_stack(kbuf))
                bio = bio_copy_kern(q, kbuf, len, gfp_mask, reading);
        else
                bio = bio_map_kern(q, kbuf, len, gfp_mask);
@@ -752,9 +750,6 @@ int blk_rq_map_kern(struct request_queue *q, struct request *rq, void *kbuf,
        bio->bi_opf &= ~REQ_OP_MASK;
        bio->bi_opf |= req_op(rq);
 
-       if (do_copy)
-               rq->rq_flags |= RQF_COPY_USER;
-
        orig_bio = bio;
        ret = blk_rq_append_bio(rq, &bio);
        if (unlikely(ret)) {