Whamcloud - gitweb
LU-14075 kernel: kernel update RHEL8.2 [4.18.0-193.28.1.el8_2]
[fs/lustre-release.git] / lustre / kernel_patches / patches / block-pass-bio-into-integrity_processing_fn-rhel8.patch
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
3 calculating it.
4
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;
13 +       unsigned int i;
14  
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;
19  
20 +       i = 0;
21         __bio_for_each_segment(bv, bio, bviter, *proc_iter) {
22                 void *kaddr = kmap_atomic(bv.bv_page);
23  
24                 iter.data_buf = kaddr + bv.bv_offset;
25                 iter.data_size = bv.bv_len;
26 +               iter.bi_idx = i;
27 +               iter.bio = bio;
28  
29                 ret = proc_fn(&iter);
30                 if (ret) {
31 @@ -228,6 +232,7 @@ static blk_status_t bio_integrity_proces
32                 }
33  
34                 kunmap_atomic(kaddr);
35 +               i++;
36         }
37         return ret;
38  }
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 {
44         sector_t                seed;
45         unsigned int            data_size;
46         unsigned short          interval;
47 +       unsigned short          bi_idx;
48         const char              *disk_name;
49 +       struct bio              *bio;
50  };
51  
52  typedef blk_status_t (integrity_processing_fn) (struct blk_integrity_iter *);