Lines Matching refs:bio
18 int blk_rq_append_bio(struct request *rq, struct bio **bio) in blk_rq_append_bio() argument
20 struct bio *orig_bio = *bio; in blk_rq_append_bio()
25 blk_queue_bounce(rq->q, bio); in blk_rq_append_bio()
27 bio_for_each_bvec(bv, *bio, iter) in blk_rq_append_bio()
30 if (!rq->bio) { in blk_rq_append_bio()
31 blk_rq_bio_prep(rq, *bio, nr_segs); in blk_rq_append_bio()
33 if (!ll_back_merge_fn(rq, *bio, nr_segs)) { in blk_rq_append_bio()
34 if (orig_bio != *bio) { in blk_rq_append_bio()
35 bio_put(*bio); in blk_rq_append_bio()
36 *bio = orig_bio; in blk_rq_append_bio()
41 rq->biotail->bi_next = *bio; in blk_rq_append_bio()
42 rq->biotail = *bio; in blk_rq_append_bio()
43 rq->__data_len += (*bio)->bi_iter.bi_size; in blk_rq_append_bio()
50 static int __blk_rq_unmap_user(struct bio *bio) in __blk_rq_unmap_user() argument
54 if (bio) { in __blk_rq_unmap_user()
55 if (bio_flagged(bio, BIO_USER_MAPPED)) in __blk_rq_unmap_user()
56 bio_unmap_user(bio); in __blk_rq_unmap_user()
58 ret = bio_uncopy_user(bio); in __blk_rq_unmap_user()
69 struct bio *bio, *orig_bio; in __blk_rq_map_user_iov() local
73 bio = bio_copy_user_iov(q, map_data, iter, gfp_mask); in __blk_rq_map_user_iov()
75 bio = bio_map_user_iov(q, iter, gfp_mask); in __blk_rq_map_user_iov()
77 if (IS_ERR(bio)) in __blk_rq_map_user_iov()
78 return PTR_ERR(bio); in __blk_rq_map_user_iov()
80 bio->bi_opf &= ~REQ_OP_MASK; in __blk_rq_map_user_iov()
81 bio->bi_opf |= req_op(rq); in __blk_rq_map_user_iov()
83 orig_bio = bio; in __blk_rq_map_user_iov()
89 ret = blk_rq_append_bio(rq, &bio); in __blk_rq_map_user_iov()
94 bio_get(bio); in __blk_rq_map_user_iov()
126 struct bio *bio = NULL; in blk_rq_map_user_iov() local
145 if (!bio) in blk_rq_map_user_iov()
146 bio = rq->bio; in blk_rq_map_user_iov()
149 if (!bio_flagged(bio, BIO_USER_MAPPED)) in blk_rq_map_user_iov()
154 __blk_rq_unmap_user(bio); in blk_rq_map_user_iov()
156 rq->bio = NULL; in blk_rq_map_user_iov()
185 int blk_rq_unmap_user(struct bio *bio) in blk_rq_unmap_user() argument
187 struct bio *mapped_bio; in blk_rq_unmap_user()
190 while (bio) { in blk_rq_unmap_user()
191 mapped_bio = bio; in blk_rq_unmap_user()
192 if (unlikely(bio_flagged(bio, BIO_BOUNCED))) in blk_rq_unmap_user()
193 mapped_bio = bio->bi_private; in blk_rq_unmap_user()
199 mapped_bio = bio; in blk_rq_unmap_user()
200 bio = bio->bi_next; in blk_rq_unmap_user()
227 struct bio *bio, *orig_bio; in blk_rq_map_kern() local
237 bio = bio_copy_kern(q, kbuf, len, gfp_mask, reading); in blk_rq_map_kern()
239 bio = bio_map_kern(q, kbuf, len, gfp_mask); in blk_rq_map_kern()
241 if (IS_ERR(bio)) in blk_rq_map_kern()
242 return PTR_ERR(bio); in blk_rq_map_kern()
244 bio->bi_opf &= ~REQ_OP_MASK; in blk_rq_map_kern()
245 bio->bi_opf |= req_op(rq); in blk_rq_map_kern()
250 orig_bio = bio; in blk_rq_map_kern()
251 ret = blk_rq_append_bio(rq, &bio); in blk_rq_map_kern()