Lines Matching refs:bio

132 static void copy_to_high_bio_irq(struct bio *to, struct bio *from)  in copy_to_high_bio_irq()
162 static void bounce_end_io(struct bio *bio, mempool_t *pool) in bounce_end_io() argument
164 struct bio *bio_orig = bio->bi_private; in bounce_end_io()
172 bio_for_each_segment_all(bvec, bio, iter_all) { in bounce_end_io()
181 bio_orig->bi_status = bio->bi_status; in bounce_end_io()
183 bio_put(bio); in bounce_end_io()
186 static void bounce_end_io_write(struct bio *bio) in bounce_end_io_write() argument
188 bounce_end_io(bio, &page_pool); in bounce_end_io_write()
191 static void bounce_end_io_write_isa(struct bio *bio) in bounce_end_io_write_isa() argument
194 bounce_end_io(bio, &isa_page_pool); in bounce_end_io_write_isa()
197 static void __bounce_end_io_read(struct bio *bio, mempool_t *pool) in __bounce_end_io_read() argument
199 struct bio *bio_orig = bio->bi_private; in __bounce_end_io_read()
201 if (!bio->bi_status) in __bounce_end_io_read()
202 copy_to_high_bio_irq(bio_orig, bio); in __bounce_end_io_read()
204 bounce_end_io(bio, pool); in __bounce_end_io_read()
207 static void bounce_end_io_read(struct bio *bio) in bounce_end_io_read() argument
209 __bounce_end_io_read(bio, &page_pool); in bounce_end_io_read()
212 static void bounce_end_io_read_isa(struct bio *bio) in bounce_end_io_read_isa() argument
214 __bounce_end_io_read(bio, &isa_page_pool); in bounce_end_io_read_isa()
217 static struct bio *bounce_clone_bio(struct bio *bio_src, gfp_t gfp_mask, in bounce_clone_bio()
222 struct bio *bio; in bounce_clone_bio() local
246 bio = bio_alloc_bioset(gfp_mask, bio_segments(bio_src), bs); in bounce_clone_bio()
247 if (!bio) in bounce_clone_bio()
249 bio->bi_disk = bio_src->bi_disk; in bounce_clone_bio()
250 bio->bi_opf = bio_src->bi_opf; in bounce_clone_bio()
251 bio->bi_ioprio = bio_src->bi_ioprio; in bounce_clone_bio()
252 bio->bi_write_hint = bio_src->bi_write_hint; in bounce_clone_bio()
253 bio->bi_iter.bi_sector = bio_src->bi_iter.bi_sector; in bounce_clone_bio()
254 bio->bi_iter.bi_size = bio_src->bi_iter.bi_size; in bounce_clone_bio()
256 switch (bio_op(bio)) { in bounce_clone_bio()
262 bio->bi_io_vec[bio->bi_vcnt++] = bio_src->bi_io_vec[0]; in bounce_clone_bio()
266 bio->bi_io_vec[bio->bi_vcnt++] = bv; in bounce_clone_bio()
273 ret = bio_integrity_clone(bio, bio_src, gfp_mask); in bounce_clone_bio()
275 bio_put(bio); in bounce_clone_bio()
280 bio_clone_blkg_association(bio, bio_src); in bounce_clone_bio()
281 blkcg_bio_issue_init(bio); in bounce_clone_bio()
283 return bio; in bounce_clone_bio()
286 static void __blk_queue_bounce(struct request_queue *q, struct bio **bio_orig, in __blk_queue_bounce()
289 struct bio *bio; in __blk_queue_bounce() local
308 bio = bio_split(*bio_orig, sectors, GFP_NOIO, &bounce_bio_split); in __blk_queue_bounce()
309 bio_chain(bio, *bio_orig); in __blk_queue_bounce()
311 *bio_orig = bio; in __blk_queue_bounce()
313 bio = bounce_clone_bio(*bio_orig, GFP_NOIO, passthrough ? NULL : in __blk_queue_bounce()
321 for (i = 0, to = bio->bi_io_vec; i < bio->bi_vcnt; to++, i++) { in __blk_queue_bounce()
344 bio->bi_flags |= (1 << BIO_BOUNCED); in __blk_queue_bounce()
347 bio->bi_end_io = bounce_end_io_write; in __blk_queue_bounce()
349 bio->bi_end_io = bounce_end_io_read; in __blk_queue_bounce()
351 bio->bi_end_io = bounce_end_io_write_isa; in __blk_queue_bounce()
353 bio->bi_end_io = bounce_end_io_read_isa; in __blk_queue_bounce()
356 bio->bi_private = *bio_orig; in __blk_queue_bounce()
357 *bio_orig = bio; in __blk_queue_bounce()
360 void blk_queue_bounce(struct request_queue *q, struct bio **bio_orig) in blk_queue_bounce()