Commit c340b990 authored by Keith Busch's avatar Keith Busch Committed by Jens Axboe
Browse files

block: support pi with extended metadata



The nvme spec allows protection information formats with metadata
extending beyond the pi field. Use the actual size of the metadata field
for incrementing the buffer.

Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarKeith Busch <kbusch@kernel.org>
Link: https://lore.kernel.org/r/20220303201312.3255347-2-kbusch@kernel.org


Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent d57c1cf4
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -165,6 +165,7 @@ static blk_status_t bio_integrity_process(struct bio *bio,

	iter.disk_name = bio->bi_bdev->bd_disk->disk_name;
	iter.interval = 1 << bi->interval_exp;
	iter.tuple_size = bi->tuple_size;
	iter.seed = proc_iter->bi_sector;
	iter.prot_buf = bvec_virt(bip->bip_vec);

+2 −2
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ static blk_status_t t10_pi_generate(struct blk_integrity_iter *iter,
			pi->ref_tag = 0;

		iter->data_buf += iter->interval;
		iter->prot_buf += sizeof(struct t10_pi_tuple);
		iter->prot_buf += iter->tuple_size;
		iter->seed++;
	}

@@ -93,7 +93,7 @@ static blk_status_t t10_pi_verify(struct blk_integrity_iter *iter,

next:
		iter->data_buf += iter->interval;
		iter->prot_buf += sizeof(struct t10_pi_tuple);
		iter->prot_buf += iter->tuple_size;
		iter->seed++;
	}

+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ struct blk_integrity_iter {
	sector_t		seed;
	unsigned int		data_size;
	unsigned short		interval;
	unsigned char		tuple_size;
	const char		*disk_name;
};