nvme fixes for 6.17

- Fix protection information ref tag for device side gen/strip
    (Christoph)
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEE3Fbyvv+648XNRdHTPe3zGtjzRgkFAmi6GLcACgkQPe3zGtjz
 RgnMiRAAiqvCBww4+8SQt0pb9tGRjLhs1W5ZLhh7pMznD8rNLJ1YRte5EOdWkHsO
 ETKXBhpLlTlooqIIbeTqKaN3/T1yd6XK/BtR28CuTqL52AGlRzwxUsRwmzvaqX0M
 7Jwskw8IjHWzeJDxpjvagqz/yE6k1KIg7sFjaCYhSRLBP6UlG4lxYZdoQi3WGYrv
 HHoa0aa01rdcrDlqmT9X1GnHZVIL4x0VO3NxorE3SqDKnGGczg7nXdVqR9I/jDRp
 l00clHONSCvkhbAzSFi1IBEkWBPc5vCYdLGtyrTsBACZ2mIczAnURjPx2VcGeOh5
 zijMwNXNzNON5oH3j9HmznHzlAH9iamScwkvfmf/QSRMwcqEDP9rGV8CxeH8RnfL
 wgiSOuNao1CrrcB2Y8CFUTRRHMsRhUME8OWP5YR5KaFvJoEQ445NyDtKuMoJ7MVP
 6farXCVU3dhE8qPVkXGw6e5OMa9eSHXjPZ9AgFdkXrgOBr8ZE2/jWWw22hkJhJU5
 VrJRBWd/YrGkflCrt6IL7TUxwMxkGqk0E0M6X1227u4A544G++cgmqcvX15SxXzp
 i+7ouw4RU2QlsqCdGDt56qfQ/vx39RecedYBf3fKi4hbkuImEVquIGf+Iy8V5TNY
 zaNWER6eCNgBSOrlsCy17xc/W4eROoHpAk8OF61hQyZEn81uq6A=
 =TeN1
 -----END PGP SIGNATURE-----

Merge tag 'nvme-6.17-2025-09-04' of git://git.infradead.org/nvme into block-6.17

Pull NVMe fix from Keith:

"nvme fixes for 6.17

 - Fix protection information ref tag for device side gen/strip
   (Christoph)"

* tag 'nvme-6.17-2025-09-04' of git://git.infradead.org/nvme:
  nvme: fix PI insert on write
This commit is contained in:
Jens Axboe 2025-09-04 17:21:28 -06:00
commit 1f6b281ac5

View File

@ -903,6 +903,15 @@ static void nvme_set_ref_tag(struct nvme_ns *ns, struct nvme_command *cmnd,
u32 upper, lower;
u64 ref48;
/* only type1 and type 2 PI formats have a reftag */
switch (ns->head->pi_type) {
case NVME_NS_DPS_PI_TYPE1:
case NVME_NS_DPS_PI_TYPE2:
break;
default:
return;
}
/* both rw and write zeroes share the same reftag format */
switch (ns->head->guard_type) {
case NVME_NVM_NS_16B_GUARD:
@ -942,13 +951,7 @@ static inline blk_status_t nvme_setup_write_zeroes(struct nvme_ns *ns,
if (nvme_ns_has_pi(ns->head)) {
cmnd->write_zeroes.control |= cpu_to_le16(NVME_RW_PRINFO_PRACT);
switch (ns->head->pi_type) {
case NVME_NS_DPS_PI_TYPE1:
case NVME_NS_DPS_PI_TYPE2:
nvme_set_ref_tag(ns, cmnd, req);
break;
}
nvme_set_ref_tag(ns, cmnd, req);
}
return BLK_STS_OK;
@ -1039,6 +1042,7 @@ static inline blk_status_t nvme_setup_rw(struct nvme_ns *ns,
if (WARN_ON_ONCE(!nvme_ns_has_pi(ns->head)))
return BLK_STS_NOTSUPP;
control |= NVME_RW_PRINFO_PRACT;
nvme_set_ref_tag(ns, cmnd, req);
}
if (bio_integrity_flagged(req->bio, BIP_CHECK_GUARD))