Lines Matching refs:bio

50 struct bio_integrity_payload *bio_integrity_alloc(struct bio *bio,  in bio_integrity_alloc()  argument
55 struct bio_set *bs = bio->bi_pool; in bio_integrity_alloc()
58 if (WARN_ON_ONCE(bio_has_crypt_ctx(bio))) in bio_integrity_alloc()
88 bip->bip_bio = bio; in bio_integrity_alloc()
89 bio->bi_integrity = bip; in bio_integrity_alloc()
90 bio->bi_opf |= REQ_INTEGRITY; in bio_integrity_alloc()
106 void bio_integrity_free(struct bio *bio) in bio_integrity_free() argument
108 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_free()
109 struct bio_set *bs = bio->bi_pool; in bio_integrity_free()
116 bio->bi_integrity = NULL; in bio_integrity_free()
117 bio->bi_opf &= ~REQ_INTEGRITY; in bio_integrity_free()
129 int bio_integrity_add_page(struct bio *bio, struct page *page, in bio_integrity_add_page() argument
132 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_add_page()
143 bvec_gap_to_prev(bio->bi_disk->queue, in bio_integrity_add_page()
162 static blk_status_t bio_integrity_process(struct bio *bio, in bio_integrity_process() argument
165 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in bio_integrity_process()
169 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_process()
174 iter.disk_name = bio->bi_disk->disk_name; in bio_integrity_process()
179 __bio_for_each_segment(bv, bio, bviter, *proc_iter) { in bio_integrity_process()
208 bool bio_integrity_prep(struct bio *bio) in bio_integrity_prep() argument
211 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in bio_integrity_prep()
212 struct request_queue *q = bio->bi_disk->queue; in bio_integrity_prep()
223 if (bio_op(bio) != REQ_OP_READ && bio_op(bio) != REQ_OP_WRITE) in bio_integrity_prep()
226 if (!bio_sectors(bio)) in bio_integrity_prep()
230 if (bio_integrity(bio)) in bio_integrity_prep()
233 if (bio_data_dir(bio) == READ) { in bio_integrity_prep()
242 intervals = bio_integrity_intervals(bi, bio_sectors(bio)); in bio_integrity_prep()
258 bip = bio_integrity_alloc(bio, GFP_NOIO, nr_pages); in bio_integrity_prep()
268 bip_set_seed(bip, bio->bi_iter.bi_sector); in bio_integrity_prep()
285 ret = bio_integrity_add_page(bio, virt_to_page(buf), in bio_integrity_prep()
303 if (bio_data_dir(bio) == WRITE) { in bio_integrity_prep()
304 bio_integrity_process(bio, &bio->bi_iter, in bio_integrity_prep()
307 bip->bio_iter = bio->bi_iter; in bio_integrity_prep()
312 bio->bi_status = status; in bio_integrity_prep()
313 bio_endio(bio); in bio_integrity_prep()
331 struct bio *bio = bip->bip_bio; in bio_integrity_verify_fn() local
332 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in bio_integrity_verify_fn()
339 bio->bi_status = bio_integrity_process(bio, &bip->bio_iter, in bio_integrity_verify_fn()
341 bio_integrity_free(bio); in bio_integrity_verify_fn()
342 bio_endio(bio); in bio_integrity_verify_fn()
356 bool __bio_integrity_endio(struct bio *bio) in __bio_integrity_endio() argument
358 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in __bio_integrity_endio()
359 struct bio_integrity_payload *bip = bio_integrity(bio); in __bio_integrity_endio()
361 if (bio_op(bio) == REQ_OP_READ && !bio->bi_status && in __bio_integrity_endio()
368 bio_integrity_free(bio); in __bio_integrity_endio()
381 void bio_integrity_advance(struct bio *bio, unsigned int bytes_done) in bio_integrity_advance() argument
383 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_advance()
384 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in bio_integrity_advance()
397 void bio_integrity_trim(struct bio *bio) in bio_integrity_trim() argument
399 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_trim()
400 struct blk_integrity *bi = blk_get_integrity(bio->bi_disk); in bio_integrity_trim()
402 bip->bip_iter.bi_size = bio_integrity_bytes(bi, bio_sectors(bio)); in bio_integrity_trim()
414 int bio_integrity_clone(struct bio *bio, struct bio *bio_src, in bio_integrity_clone() argument
422 bip = bio_integrity_alloc(bio, gfp_mask, bip_src->bip_vcnt); in bio_integrity_clone()