Lines Matching refs:bio

23 void bio_integrity_free(struct bio *bio)  in bio_integrity_free()  argument
25 kfree(bio_integrity(bio)); in bio_integrity_free()
26 bio->bi_integrity = NULL; in bio_integrity_free()
27 bio->bi_opf &= ~REQ_INTEGRITY; in bio_integrity_free()
30 void bio_integrity_init(struct bio *bio, struct bio_integrity_payload *bip, in bio_integrity_init() argument
38 bio->bi_integrity = bip; in bio_integrity_init()
39 bio->bi_opf |= REQ_INTEGRITY; in bio_integrity_init()
52 struct bio_integrity_payload *bio_integrity_alloc(struct bio *bio, in bio_integrity_alloc() argument
58 if (WARN_ON_ONCE(bio_has_crypt_ctx(bio))) in bio_integrity_alloc()
64 bio_integrity_init(bio, &bia->bip, bia->bvecs, nr_vecs); in bio_integrity_alloc()
99 void bio_integrity_unmap_user(struct bio *bio) in bio_integrity_unmap_user() argument
101 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_unmap_user()
104 if (bio_data_dir(bio) == READ) in bio_integrity_unmap_user()
122 int bio_integrity_add_page(struct bio *bio, struct page *page, in bio_integrity_add_page() argument
125 struct request_queue *q = bdev_get_queue(bio->bi_bdev); in bio_integrity_add_page()
126 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_add_page()
159 static int bio_integrity_copy_user(struct bio *bio, struct bio_vec *bvec, in bio_integrity_copy_user() argument
162 bool write = op_is_write(bio_op(bio)); in bio_integrity_copy_user()
179 bip = bio_integrity_alloc(bio, GFP_KERNEL, 1); in bio_integrity_copy_user()
187 bip = bio_integrity_alloc(bio, GFP_KERNEL, nr_vecs + 1); in bio_integrity_copy_user()
200 ret = bio_integrity_add_page(bio, virt_to_page(buf), len, in bio_integrity_copy_user()
211 bio_integrity_free(bio); in bio_integrity_copy_user()
217 static int bio_integrity_init_user(struct bio *bio, struct bio_vec *bvec, in bio_integrity_init_user() argument
222 bip = bio_integrity_alloc(bio, GFP_KERNEL, nr_vecs); in bio_integrity_init_user()
262 int bio_integrity_map_user(struct bio *bio, struct iov_iter *iter) in bio_integrity_map_user() argument
264 struct request_queue *q = bdev_get_queue(bio->bi_bdev); in bio_integrity_map_user()
273 if (bio_integrity(bio)) in bio_integrity_map_user()
300 ret = bio_integrity_copy_user(bio, bvec, nr_bvecs, bytes); in bio_integrity_map_user()
302 ret = bio_integrity_init_user(bio, bvec, nr_bvecs, bytes); in bio_integrity_map_user()
318 static void bio_uio_meta_to_bip(struct bio *bio, struct uio_meta *meta) in bio_uio_meta_to_bip() argument
320 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_uio_meta_to_bip()
332 int bio_integrity_map_iter(struct bio *bio, struct uio_meta *meta) in bio_integrity_map_iter() argument
334 struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk); in bio_integrity_map_iter()
346 integrity_bytes = bio_integrity_bytes(bi, bio_sectors(bio)); in bio_integrity_map_iter()
357 ret = bio_integrity_map_user(bio, &it); in bio_integrity_map_iter()
359 bio_uio_meta_to_bip(bio, meta); in bio_integrity_map_iter()
360 bip_set_seed(bio_integrity(bio), meta->seed); in bio_integrity_map_iter()
362 meta->seed += bio_integrity_intervals(bi, bio_sectors(bio)); in bio_integrity_map_iter()
376 void bio_integrity_advance(struct bio *bio, unsigned int bytes_done) in bio_integrity_advance() argument
378 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_advance()
379 struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk); in bio_integrity_advance()
392 void bio_integrity_trim(struct bio *bio) in bio_integrity_trim() argument
394 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_trim()
395 struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk); in bio_integrity_trim()
397 bip->bip_iter.bi_size = bio_integrity_bytes(bi, bio_sectors(bio)); in bio_integrity_trim()
409 int bio_integrity_clone(struct bio *bio, struct bio *bio_src, in bio_integrity_clone() argument
417 bip = bio_integrity_alloc(bio, gfp_mask, 0); in bio_integrity_clone()