Lines Matching refs:bio

19 void bio_integrity_alloc_buf(struct bio *bio, bool zero_buffer)  in bio_integrity_alloc_buf()  argument
21 struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk); in bio_integrity_alloc_buf()
22 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_alloc_buf()
23 unsigned int len = bio_integrity_bytes(bi, bio_sectors(bio)); in bio_integrity_alloc_buf()
62 void bio_integrity_free(struct bio *bio) in bio_integrity_free() argument
64 kfree(bio_integrity(bio)); in bio_integrity_free()
65 bio->bi_integrity = NULL; in bio_integrity_free()
66 bio->bi_opf &= ~REQ_INTEGRITY; in bio_integrity_free()
69 void bio_integrity_init(struct bio *bio, struct bio_integrity_payload *bip, in bio_integrity_init() argument
77 bio->bi_integrity = bip; in bio_integrity_init()
78 bio->bi_opf |= REQ_INTEGRITY; in bio_integrity_init()
91 struct bio_integrity_payload *bio_integrity_alloc(struct bio *bio, in bio_integrity_alloc() argument
97 if (WARN_ON_ONCE(bio_has_crypt_ctx(bio))) in bio_integrity_alloc()
103 bio_integrity_init(bio, &bia->bip, bia->bvecs, nr_vecs); in bio_integrity_alloc()
138 void bio_integrity_unmap_user(struct bio *bio) in bio_integrity_unmap_user() argument
140 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_unmap_user()
143 if (bio_data_dir(bio) == READ) in bio_integrity_unmap_user()
161 int bio_integrity_add_page(struct bio *bio, struct page *page, in bio_integrity_add_page() argument
164 struct request_queue *q = bdev_get_queue(bio->bi_bdev); in bio_integrity_add_page()
165 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_add_page()
198 static int bio_integrity_copy_user(struct bio *bio, struct bio_vec *bvec, in bio_integrity_copy_user() argument
201 bool write = op_is_write(bio_op(bio)); in bio_integrity_copy_user()
218 bip = bio_integrity_alloc(bio, GFP_KERNEL, 1); in bio_integrity_copy_user()
226 bip = bio_integrity_alloc(bio, GFP_KERNEL, nr_vecs + 1); in bio_integrity_copy_user()
239 ret = bio_integrity_add_page(bio, virt_to_page(buf), len, in bio_integrity_copy_user()
250 bio_integrity_free(bio); in bio_integrity_copy_user()
256 static int bio_integrity_init_user(struct bio *bio, struct bio_vec *bvec, in bio_integrity_init_user() argument
261 bip = bio_integrity_alloc(bio, GFP_KERNEL, nr_vecs); in bio_integrity_init_user()
305 int bio_integrity_map_user(struct bio *bio, struct iov_iter *iter) in bio_integrity_map_user() argument
307 struct request_queue *q = bdev_get_queue(bio->bi_bdev); in bio_integrity_map_user()
316 if (bio_integrity(bio)) in bio_integrity_map_user()
349 bio->bi_opf |= REQ_NOMERGE; in bio_integrity_map_user()
352 ret = bio_integrity_copy_user(bio, bvec, nr_bvecs, bytes); in bio_integrity_map_user()
354 ret = bio_integrity_init_user(bio, bvec, nr_bvecs, bytes); in bio_integrity_map_user()
370 static void bio_uio_meta_to_bip(struct bio *bio, struct uio_meta *meta) in bio_uio_meta_to_bip() argument
372 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_uio_meta_to_bip()
384 int bio_integrity_map_iter(struct bio *bio, struct uio_meta *meta) in bio_integrity_map_iter() argument
386 struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk); in bio_integrity_map_iter()
398 integrity_bytes = bio_integrity_bytes(bi, bio_sectors(bio)); in bio_integrity_map_iter()
409 ret = bio_integrity_map_user(bio, &it); in bio_integrity_map_iter()
411 bio_uio_meta_to_bip(bio, meta); in bio_integrity_map_iter()
412 bip_set_seed(bio_integrity(bio), meta->seed); in bio_integrity_map_iter()
414 meta->seed += bio_integrity_intervals(bi, bio_sectors(bio)); in bio_integrity_map_iter()
428 void bio_integrity_advance(struct bio *bio, unsigned int bytes_done) in bio_integrity_advance() argument
430 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_advance()
431 struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk); in bio_integrity_advance()
444 void bio_integrity_trim(struct bio *bio) in bio_integrity_trim() argument
446 struct bio_integrity_payload *bip = bio_integrity(bio); in bio_integrity_trim()
447 struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk); in bio_integrity_trim()
449 bip->bip_iter.bi_size = bio_integrity_bytes(bi, bio_sectors(bio)); in bio_integrity_trim()
461 int bio_integrity_clone(struct bio *bio, struct bio *bio_src, in bio_integrity_clone() argument
469 bip = bio_integrity_alloc(bio, gfp_mask, 0); in bio_integrity_clone()