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()
85 bip->bip_bio = bio; in bio_integrity_alloc()
86 bio->bi_integrity = bip; in bio_integrity_alloc()
87 bio->bi_rw |= REQ_INTEGRITY; in bio_integrity_alloc()
103 void bio_integrity_free(struct bio *bio) in bio_integrity_free() argument
105 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_free()
106 struct bio_set *bs = bio->bi_pool; in bio_integrity_free()
122 bio->bi_integrity = NULL; in bio_integrity_free()
135 int bio_integrity_add_page(struct bio *bio, struct page *page, in bio_integrity_add_page() argument
138 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_add_page()
149 bvec_gap_to_prev(bdev_get_queue(bio->bi_bdev), in bio_integrity_add_page()
171 bool bio_integrity_enabled(struct bio *bio) in bio_integrity_enabled() argument
173 struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev); in bio_integrity_enabled()
175 if (!bio_is_rw(bio)) in bio_integrity_enabled()
179 if (bio_integrity(bio)) in bio_integrity_enabled()
185 if (bio_data_dir(bio) == READ && bi->profile->verify_fn != NULL && in bio_integrity_enabled()
189 if (bio_data_dir(bio) == WRITE && bi->profile->generate_fn != NULL && in bio_integrity_enabled()
224 static int bio_integrity_process(struct bio *bio, in bio_integrity_process() argument
227 struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev); in bio_integrity_process()
231 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_process()
236 iter.disk_name = bio->bi_bdev->bd_disk->disk_name; in bio_integrity_process()
241 bio_for_each_segment(bv, bio, bviter) { in bio_integrity_process()
269 int bio_integrity_prep(struct bio *bio) in bio_integrity_prep() argument
280 bi = bdev_get_integrity(bio->bi_bdev); in bio_integrity_prep()
281 q = bdev_get_queue(bio->bi_bdev); in bio_integrity_prep()
283 BUG_ON(bio_integrity(bio)); in bio_integrity_prep()
285 intervals = bio_integrity_intervals(bi, bio_sectors(bio)); in bio_integrity_prep()
300 bip = bio_integrity_alloc(bio, GFP_NOIO, nr_pages); in bio_integrity_prep()
309 bip_set_seed(bip, bio->bi_iter.bi_sector); in bio_integrity_prep()
326 ret = bio_integrity_add_page(bio, virt_to_page(buf), in bio_integrity_prep()
341 if (bio_data_dir(bio) == READ) { in bio_integrity_prep()
342 bip->bip_end_io = bio->bi_end_io; in bio_integrity_prep()
343 bio->bi_end_io = bio_integrity_endio; in bio_integrity_prep()
347 if (bio_data_dir(bio) == WRITE) in bio_integrity_prep()
348 bio_integrity_process(bio, bi->profile->generate_fn); in bio_integrity_prep()
366 struct bio *bio = bip->bip_bio; in bio_integrity_verify_fn() local
367 struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev); in bio_integrity_verify_fn()
369 bio->bi_error = bio_integrity_process(bio, bi->profile->verify_fn); in bio_integrity_verify_fn()
372 bio->bi_end_io = bip->bip_end_io; in bio_integrity_verify_fn()
373 bio_endio(bio); in bio_integrity_verify_fn()
388 void bio_integrity_endio(struct bio *bio) in bio_integrity_endio() argument
390 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_endio()
392 BUG_ON(bip->bip_bio != bio); in bio_integrity_endio()
398 if (bio->bi_error) { in bio_integrity_endio()
399 bio->bi_end_io = bip->bip_end_io; in bio_integrity_endio()
400 bio_endio(bio); in bio_integrity_endio()
419 void bio_integrity_advance(struct bio *bio, unsigned int bytes_done) in bio_integrity_advance() argument
421 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_advance()
422 struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev); in bio_integrity_advance()
440 void bio_integrity_trim(struct bio *bio, unsigned int offset, in bio_integrity_trim() argument
443 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_trim()
444 struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev); in bio_integrity_trim()
446 bio_integrity_advance(bio, offset << 9); in bio_integrity_trim()
459 int bio_integrity_clone(struct bio *bio, struct bio *bio_src, in bio_integrity_clone() argument
467 bip = bio_integrity_alloc(bio, gfp_mask, bip_src->bip_vcnt); in bio_integrity_clone()