Lines Matching refs:bio

37 struct bio_integrity_payload *bio_integrity_alloc(struct bio *bio,  in bio_integrity_alloc()  argument
42 struct bio_set *bs = bio->bi_pool; in bio_integrity_alloc()
72 bip->bip_bio = bio; in bio_integrity_alloc()
73 bio->bi_integrity = bip; in bio_integrity_alloc()
74 bio->bi_opf |= REQ_INTEGRITY; in bio_integrity_alloc()
90 static void bio_integrity_free(struct bio *bio) in bio_integrity_free() argument
92 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_free()
93 struct bio_set *bs = bio->bi_pool; in bio_integrity_free()
107 bio->bi_integrity = NULL; in bio_integrity_free()
108 bio->bi_opf &= ~REQ_INTEGRITY; in bio_integrity_free()
120 int bio_integrity_add_page(struct bio *bio, struct page *page, in bio_integrity_add_page() argument
123 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_add_page()
134 bvec_gap_to_prev(bio->bi_disk->queue, in bio_integrity_add_page()
153 static blk_status_t bio_integrity_process(struct bio *bio, in bio_integrity_process() argument
156 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in bio_integrity_process()
160 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_process()
165 iter.disk_name = bio->bi_disk->disk_name; in bio_integrity_process()
170 __bio_for_each_segment(bv, bio, bviter, *proc_iter) { in bio_integrity_process()
199 bool bio_integrity_prep(struct bio *bio) in bio_integrity_prep() argument
202 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in bio_integrity_prep()
203 struct request_queue *q = bio->bi_disk->queue; in bio_integrity_prep()
214 if (bio_op(bio) != REQ_OP_READ && bio_op(bio) != REQ_OP_WRITE) in bio_integrity_prep()
217 if (!bio_sectors(bio)) in bio_integrity_prep()
221 if (bio_integrity(bio)) in bio_integrity_prep()
224 if (bio_data_dir(bio) == READ) { in bio_integrity_prep()
233 intervals = bio_integrity_intervals(bi, bio_sectors(bio)); in bio_integrity_prep()
249 bip = bio_integrity_alloc(bio, GFP_NOIO, nr_pages); in bio_integrity_prep()
259 bip_set_seed(bip, bio->bi_iter.bi_sector); in bio_integrity_prep()
276 ret = bio_integrity_add_page(bio, virt_to_page(buf), in bio_integrity_prep()
295 if (bio_data_dir(bio) == WRITE) { in bio_integrity_prep()
296 bio_integrity_process(bio, &bio->bi_iter, in bio_integrity_prep()
299 bip->bio_iter = bio->bi_iter; in bio_integrity_prep()
304 bio->bi_status = status; in bio_integrity_prep()
305 bio_endio(bio); in bio_integrity_prep()
323 struct bio *bio = bip->bip_bio; in bio_integrity_verify_fn() local
324 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in bio_integrity_verify_fn()
331 bio->bi_status = bio_integrity_process(bio, &bip->bio_iter, in bio_integrity_verify_fn()
333 bio_integrity_free(bio); in bio_integrity_verify_fn()
334 bio_endio(bio); in bio_integrity_verify_fn()
348 bool __bio_integrity_endio(struct bio *bio) in __bio_integrity_endio() argument
350 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in __bio_integrity_endio()
351 struct bio_integrity_payload *bip = bio_integrity(bio); in __bio_integrity_endio()
353 if (bio_op(bio) == REQ_OP_READ && !bio->bi_status && in __bio_integrity_endio()
360 bio_integrity_free(bio); in __bio_integrity_endio()
373 void bio_integrity_advance(struct bio *bio, unsigned int bytes_done) in bio_integrity_advance() argument
375 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_advance()
376 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in bio_integrity_advance()
389 void bio_integrity_trim(struct bio *bio) in bio_integrity_trim() argument
391 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_trim()
392 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in bio_integrity_trim()
394 bip->bip_iter.bi_size = bio_integrity_bytes(bi, bio_sectors(bio)); in bio_integrity_trim()
406 int bio_integrity_clone(struct bio *bio, struct bio *bio_src, in bio_integrity_clone() argument
414 bip = bio_integrity_alloc(bio, gfp_mask, bip_src->bip_vcnt); in bio_integrity_clone()