Keith, This all looks pretty good to me. Only nit I have is: > +static blk_status_t nvme_pi_type1_verify_crc(struct blk_integrity_iter *iter) > +{ > + return nvme_crc64_verify(iter, T10_PI_TYPE1_PROTECTION); > +} > + > +static blk_status_t nvme_pi_type1_generate_crc(struct blk_integrity_iter *iter) > +{ > + return nvme_crc64_generate(iter, T10_PI_TYPE1_PROTECTION); > +} Since we will definitely need to support the CRC32C variants, the nvme_pi_type1_ prefix is a bit too generic. Wish we had gone with Type 4 and 5 like I originally proposed in SCSI. Not a big fan of this "almost exactly like T10 Type 1 except for all these differences" situation that NVMe ended up with. Anyway. So I think the NVMe-specific format helpers need to at the very least capture that they are for the CRC64 case. Other than that it looks OK. -- Martin K. Petersen Oracle Linux Engineering