Having struct bio allows us to do more in the genrate/verify_fn, like copying a known good guard tag already available rather than calculating it. Index: linux-4.18.0-80.11.2.el8_0/block/bio-integrity.c =================================================================== --- linux-4.18.0-80.11.2.el8_0.orig/block/bio-integrity.c +++ linux-4.18.0-80.11.2.el8_0/block/bio-integrity.c @@ -197,6 +197,8 @@ static blk_status_t bio_integrity_proces iter.data_buf = kaddr + bv.bv_offset; iter.data_size = bv.bv_len; + iter.bi_idx = bviter.bi_idx; + iter.bio = bio; ret = proc_fn(&iter); if (ret) { Index: linux-4.18.0-80.11.2.el8_0/include/linux/blkdev.h =================================================================== --- linux-4.18.0-80.11.2.el8_0.orig/include/linux/blkdev.h +++ linux-4.18.0-80.11.2.el8_0/include/linux/blkdev.h @@ -1502,7 +1502,9 @@ struct blk_integrity_iter { sector_t seed; unsigned int data_size; unsigned short interval; + RH_KABI_FILL_HOLE(unsigned short bi_idx) const char *disk_name; + RH_KABI_EXTEND(struct bio *bio) }; struct blk_integrity_profile {