Lines Matching refs:bio
51 struct bio *bio; member
146 static void blk_crypto_fallback_encrypt_endio(struct bio *enc_bio) in blk_crypto_fallback_encrypt_endio()
148 struct bio *src_bio = enc_bio->bi_private; in blk_crypto_fallback_encrypt_endio()
161 static struct bio *blk_crypto_clone_bio(struct bio *bio_src) in blk_crypto_clone_bio()
165 struct bio *bio; in blk_crypto_clone_bio() local
167 bio = bio_alloc_bioset(GFP_NOIO, bio_segments(bio_src), NULL); in blk_crypto_clone_bio()
168 if (!bio) in blk_crypto_clone_bio()
170 bio->bi_disk = bio_src->bi_disk; in blk_crypto_clone_bio()
171 bio->bi_opf = bio_src->bi_opf; in blk_crypto_clone_bio()
172 bio->bi_ioprio = bio_src->bi_ioprio; in blk_crypto_clone_bio()
173 bio->bi_write_hint = bio_src->bi_write_hint; in blk_crypto_clone_bio()
174 bio->bi_iter.bi_sector = bio_src->bi_iter.bi_sector; in blk_crypto_clone_bio()
175 bio->bi_iter.bi_size = bio_src->bi_iter.bi_size; in blk_crypto_clone_bio()
178 bio->bi_io_vec[bio->bi_vcnt++] = bv; in blk_crypto_clone_bio()
180 bio_clone_blkg_association(bio, bio_src); in blk_crypto_clone_bio()
181 blkcg_bio_issue_init(bio); in blk_crypto_clone_bio()
183 bio_clone_skip_dm_default_key(bio, bio_src); in blk_crypto_clone_bio()
185 return bio; in blk_crypto_clone_bio()
211 static bool blk_crypto_split_bio_if_needed(struct bio **bio_ptr) in blk_crypto_split_bio_if_needed()
213 struct bio *bio = *bio_ptr; in blk_crypto_split_bio_if_needed() local
219 bio_for_each_segment(bv, bio, iter) { in blk_crypto_split_bio_if_needed()
224 if (num_sectors < bio_sectors(bio)) { in blk_crypto_split_bio_if_needed()
225 struct bio *split_bio; in blk_crypto_split_bio_if_needed()
227 split_bio = bio_split(bio, num_sectors, GFP_NOIO, NULL); in blk_crypto_split_bio_if_needed()
229 bio->bi_status = BLK_STS_RESOURCE; in blk_crypto_split_bio_if_needed()
232 bio_chain(split_bio, bio); in blk_crypto_split_bio_if_needed()
233 submit_bio_noacct(bio); in blk_crypto_split_bio_if_needed()
261 static bool blk_crypto_fallback_encrypt_bio(struct bio **bio_ptr) in blk_crypto_fallback_encrypt_bio()
263 struct bio *src_bio, *enc_bio; in blk_crypto_fallback_encrypt_bio()
379 struct bio *bio = f_ctx->bio; in blk_crypto_fallback_decrypt_bio() local
399 bio->bi_status = blk_st; in blk_crypto_fallback_decrypt_bio()
405 bio->bi_status = BLK_STS_RESOURCE; in blk_crypto_fallback_decrypt_bio()
415 __bio_for_each_segment(bv, bio, iter, f_ctx->crypt_iter) { in blk_crypto_fallback_decrypt_bio()
425 bio->bi_status = BLK_STS_IOERR; in blk_crypto_fallback_decrypt_bio()
438 bio_endio(bio); in blk_crypto_fallback_decrypt_bio()
449 static void blk_crypto_fallback_decrypt_endio(struct bio *bio) in blk_crypto_fallback_decrypt_endio() argument
451 struct bio_fallback_crypt_ctx *f_ctx = bio->bi_private; in blk_crypto_fallback_decrypt_endio()
453 bio->bi_private = f_ctx->bi_private_orig; in blk_crypto_fallback_decrypt_endio()
454 bio->bi_end_io = f_ctx->bi_end_io_orig; in blk_crypto_fallback_decrypt_endio()
457 if (bio->bi_status) { in blk_crypto_fallback_decrypt_endio()
459 bio_endio(bio); in blk_crypto_fallback_decrypt_endio()
464 f_ctx->bio = bio; in blk_crypto_fallback_decrypt_endio()
488 bool blk_crypto_fallback_bio_prep(struct bio **bio_ptr) in blk_crypto_fallback_bio_prep()
490 struct bio *bio = *bio_ptr; in blk_crypto_fallback_bio_prep() local
491 struct bio_crypt_ctx *bc = bio->bi_crypt_context; in blk_crypto_fallback_bio_prep()
496 bio->bi_status = BLK_STS_IOERR; in blk_crypto_fallback_bio_prep()
502 bio->bi_status = BLK_STS_NOTSUPP; in blk_crypto_fallback_bio_prep()
506 if (bio_data_dir(bio) == WRITE) in blk_crypto_fallback_bio_prep()
515 f_ctx->crypt_iter = bio->bi_iter; in blk_crypto_fallback_bio_prep()
516 f_ctx->bi_private_orig = bio->bi_private; in blk_crypto_fallback_bio_prep()
517 f_ctx->bi_end_io_orig = bio->bi_end_io; in blk_crypto_fallback_bio_prep()
518 bio->bi_private = (void *)f_ctx; in blk_crypto_fallback_bio_prep()
519 bio->bi_end_io = blk_crypto_fallback_decrypt_endio; in blk_crypto_fallback_bio_prep()
520 bio_crypt_free_ctx(bio); in blk_crypto_fallback_bio_prep()