1 Having struct bio allows us to do more in the genrate/verify_fn,
2 like copying a known good guard tag already available rather than
5 Index: linux-4.18.0/block/bio-integrity.c
6 ===================================================================
7 --- linux-4.18.0.orig/block/bio-integrity.c
8 +++ linux-4.18.0/block/bio-integrity.c
9 @@ -209,17 +209,21 @@ static blk_status_t bio_integrity_proces
10 blk_status_t ret = BLK_STS_OK;
11 void *prot_buf = page_address(bip->bip_vec->bv_page) +
12 bip->bip_vec->bv_offset;
15 iter.disk_name = bio->bi_disk->disk_name;
16 iter.interval = 1 << bi->interval_exp;
17 iter.seed = proc_iter->bi_sector;
18 iter.prot_buf = prot_buf;
21 __bio_for_each_segment(bv, bio, bviter, *proc_iter) {
22 void *kaddr = kmap_atomic(bv.bv_page);
24 iter.data_buf = kaddr + bv.bv_offset;
25 iter.data_size = bv.bv_len;
31 @@ -228,6 +232,7 @@ static blk_status_t bio_integrity_proces
39 Index: linux-4.18.0/include/linux/blkdev.h
40 ===================================================================
41 --- linux-4.18.0.orig/include/linux/blkdev.h
42 +++ linux-4.18.0/include/linux/blkdev.h
43 @@ -1802,7 +1802,9 @@ struct blk_integrity_iter {
45 unsigned int data_size;
46 unsigned short interval;
47 + unsigned short bi_idx;
48 const char *disk_name;
52 typedef blk_status_t (integrity_processing_fn) (struct blk_integrity_iter *);