Lines Matching refs:bip
26 struct bio_integrity_payload *bip)
29 if (bip->bip_vec)
30 bvec_free(&bs->bvec_integrity_pool, bip->bip_vec,
31 bip->bip_max_vcnt);
32 mempool_free(bip, &bs->bio_integrity_pool);
34 kfree(bip);
52 struct bio_integrity_payload *bip;
60 bip = kmalloc(struct_size(bip, bip_inline_vecs, nr_vecs), gfp_mask);
63 bip = mempool_alloc(&bs->bio_integrity_pool, gfp_mask);
67 if (unlikely(!bip))
70 memset(bip, 0, sizeof(*bip));
73 bip->bip_max_vcnt = nr_vecs;
74 bip->bip_vec = bvec_alloc(&bs->bvec_integrity_pool,
75 &bip->bip_max_vcnt, gfp_mask);
76 if (!bip->bip_vec)
79 bip->bip_vec = bip->bip_inline_vecs;
80 bip->bip_max_vcnt = inline_vecs;
83 bip->bip_bio = bio;
84 bio->bi_integrity = bip;
87 return bip;
89 __bio_integrity_free(bs, bip);
96 * @bio: bio containing bip to be freed
103 struct bio_integrity_payload *bip = bio_integrity(bio);
106 if (bip->bip_flags & BIP_BLOCK_INTEGRITY)
107 kfree(bvec_virt(bip->bip_vec));
109 __bio_integrity_free(bs, bip);
127 struct bio_integrity_payload *bip = bio_integrity(bio);
129 if (((bip->bip_iter.bi_size + len) >> SECTOR_SHIFT) >
133 if (bip->bip_vcnt > 0) {
134 struct bio_vec *bv = &bip->bip_vec[bip->bip_vcnt - 1];
139 bip->bip_iter.bi_size += len;
143 if (bip->bip_vcnt >=
144 min(bip->bip_max_vcnt, queue_max_integrity_segments(q)))
155 bvec_set_page(&bip->bip_vec[bip->bip_vcnt], page, len, offset);
156 bip->bip_vcnt++;
157 bip->bip_iter.bi_size += len;
176 struct bio_integrity_payload *bip = bio_integrity(bio);
183 iter.prot_buf = bvec_virt(bip->bip_vec);
214 struct bio_integrity_payload *bip;
257 bip = bio_integrity_alloc(bio, GFP_NOIO, nr_pages);
258 if (IS_ERR(bip)) {
264 bip->bip_flags |= BIP_BLOCK_INTEGRITY;
265 bip_set_seed(bip, bio->bi_iter.bi_sector);
268 bip->bip_flags |= BIP_IP_CHECKSUM;
294 bip->bio_iter = bio->bi_iter;
315 struct bio_integrity_payload *bip =
317 struct bio *bio = bip->bip_bio;
325 bio->bi_status = bio_integrity_process(bio, &bip->bio_iter,
345 struct bio_integrity_payload *bip = bio_integrity(bio);
348 (bip->bip_flags & BIP_BLOCK_INTEGRITY) && bi->profile->verify_fn) {
349 INIT_WORK(&bip->bip_work, bio_integrity_verify_fn);
350 queue_work(kintegrityd_wq, &bip->bip_work);
369 struct bio_integrity_payload *bip = bio_integrity(bio);
373 bip->bip_iter.bi_sector += bio_integrity_intervals(bi, bytes_done >> 9);
374 bvec_iter_advance(bip->bip_vec, &bip->bip_iter, bytes);
385 struct bio_integrity_payload *bip = bio_integrity(bio);
388 bip->bip_iter.bi_size = bio_integrity_bytes(bi, bio_sectors(bio));
398 * Description: Called to allocate a bip when cloning a bio
404 struct bio_integrity_payload *bip;
408 bip = bio_integrity_alloc(bio, gfp_mask, bip_src->bip_vcnt);
409 if (IS_ERR(bip))
410 return PTR_ERR(bip);
412 memcpy(bip->bip_vec, bip_src->bip_vec,
415 bip->bip_vcnt = bip_src->bip_vcnt;
416 bip->bip_iter = bip_src->bip_iter;
417 bip->bip_flags = bip_src->bip_flags & ~BIP_BLOCK_INTEGRITY;