Only type 1 and type 2 have a reference tag by definition. Suggested-by: Keith Busch <kbusch@xxxxxxxxxx> Signed-off-by: Max Gurtovoy <maxg@xxxxxxxxxxxx> --- block/t10-pi.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/block/t10-pi.c b/block/t10-pi.c index 7d9a151..088c3c7 100644 --- a/block/t10-pi.c +++ b/block/t10-pi.c @@ -178,7 +178,7 @@ static blk_status_t t10_pi_type3_verify_ip(struct blk_integrity_iter *iter) * likely to be different. Remap protection information to match the * physical LBA. * - * Type 3 does not have a reference tag so no remapping is required. + * Types 0 and 3 don't have a reference tag so no remapping is required. */ void t10_pi_prepare(struct request *rq) { @@ -186,7 +186,8 @@ void t10_pi_prepare(struct request *rq) u32 ref_tag = t10_pi_ref_tag(rq); struct bio *bio; - if (rq->rq_disk->protection_type == T10_PI_TYPE3_PROTECTION) + if (rq->rq_disk->protection_type == T10_PI_TYPE0_PROTECTION || + rq->rq_disk->protection_type == T10_PI_TYPE3_PROTECTION) return; __rq_for_each_bio(bio, rq) { @@ -234,7 +235,7 @@ void t10_pi_prepare(struct request *rq) * to the device, we should remap it back to virtual values expected by the * block layer. * - * Type 3 does not have a reference tag so no remapping is required. + * Types 0 and 3 don't have a reference tag so no remapping is required. */ void t10_pi_complete(struct request *rq, unsigned int nr_bytes) { @@ -243,7 +244,8 @@ void t10_pi_complete(struct request *rq, unsigned int nr_bytes) u32 ref_tag = t10_pi_ref_tag(rq); struct bio *bio; - if (rq->rq_disk->protection_type == T10_PI_TYPE3_PROTECTION) + if (rq->rq_disk->protection_type == T10_PI_TYPE0_PROTECTION || + rq->rq_disk->protection_type == T10_PI_TYPE3_PROTECTION) return; __rq_for_each_bio(bio, rq) { -- 1.8.3.1