Skip to content

Commit e39dab8

Browse files
calebsanderkawasaki
authored andcommitted
block: use integrity interval instead of sector as seed
bio_integrity_setup_default() and blk_integrity_iterate() set the integrity seed (initial reference tag) to the absolute address in the block device in units of 512-byte sectors. The seed is correctly incremented/decremented in units of integrity intervals in bio_integrity_map_iter(), bio_integrity_advance(), and blk_integrity_interval(). As a result, the ref tag written or read to a particular integrity interval on a block device with integrity interval size > 512 bytes varies with the starting offset of the read/write. Convert the initial seed to units of integrity intervals so a consistent ref tag is used for each integrity interval. Signed-off-by: Caleb Sander Mateos <csander@purestorage.com> Fixes: 3be91c4 ("block: Deprecate the use of the term sector in the context of block integrity") Fixes: 63573e3 ("bio-integrity: Restore original iterator on verify stage") Reviewed-by: Anuj Gupta <anuj20.g@samsung.com>
1 parent 1e966bb commit e39dab8

2 files changed

Lines changed: 2 additions & 2 deletions

File tree

block/bio-integrity.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ void bio_integrity_setup_default(struct bio *bio)
106106
struct blk_integrity *bi = blk_get_integrity(bio->bi_bdev->bd_disk);
107107
struct bio_integrity_payload *bip = bio_integrity(bio);
108108

109-
bip_set_seed(bip, bio->bi_iter.bi_sector);
109+
bip_set_seed(bip, bio_integrity_intervals(bi, bio->bi_iter.bi_sector));
110110

111111
if (bi->csum_type) {
112112
bip->bip_flags |= BIP_CHECK_GUARD;

block/t10-pi.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -317,7 +317,7 @@ static blk_status_t blk_integrity_iterate(struct bio *bio,
317317
.data_iter = *data_iter,
318318
.prot_iter = bip->bip_iter,
319319
.interval_remaining = 1 << bi->interval_exp,
320-
.seed = data_iter->bi_sector,
320+
.seed = bio_integrity_intervals(bi, data_iter->bi_sector),
321321
.csum = 0,
322322
};
323323
blk_status_t ret = BLK_STS_OK;

0 commit comments

Comments
 (0)