From add4f3baf03b8a3f0eb6c77f5df15c8594a1a29c Mon Sep 17 00:00:00 2001 From: Daniel Wagner Date: Tue, 9 Dec 2025 12:18:48 +0100 Subject: [PATCH] nvme: handle absence of PI support in IO commands The PI feature is not always available, thus do not try to use it if it is not available. Signed-off-by: Daniel Wagner --- nvme.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/nvme.c b/nvme.c index 528076fc59..1fa7da7c24 100644 --- a/nvme.c +++ b/nvme.c @@ -7262,9 +7262,10 @@ static int init_pi_tags(struct nvme_transport_handle *hdl, return -ENOMEM; err = nvme_identify_csi_ns(hdl, nsid, NVME_CSI_NVM, 0, nvm_ns); + if (err) + return -ENAVAIL; - if (!err) - get_pif_sts(ns, nvm_ns, &pif, &sts); + get_pif_sts(ns, nvm_ns, &pif, &sts); if (invalid_tags(lbst, ilbrt, sts, pif)) return -EINVAL; @@ -7379,7 +7380,7 @@ static int write_zeroes(int argc, char **argv, cfg.block_count, control, cfg.dspec, 0, 0); err = init_pi_tags(hdl, &cmd, cfg.nsid, cfg.ilbrt, cfg.lbst, cfg.lbat, cfg.lbatm); - if (err) + if (err != 0 && err != -ENAVAIL) return err; err = nvme_submit_io_passthru(hdl, &cmd); if (err < 0) @@ -7719,7 +7720,7 @@ static int copy_cmd(int argc, char **argv, struct command *acmd, struct plugin * cfg.fua, cfg.lr, 0, cfg.dspec, copy->f0); err = init_pi_tags(hdl, &cmd, cfg.nsid, cfg.ilbrt, cfg.lbst, cfg.lbat, cfg.lbatm); - if (err) + if (err != 0 && err != -ENAVAIL) return err; err = nvme_submit_io_passthru(hdl, &cmd); if (err < 0) @@ -8561,7 +8562,7 @@ static int verify_cmd(int argc, char **argv, struct command *acmd, struct plugin cfg.block_count, control, 0, NULL, 0, NULL, 0); err = init_pi_tags(hdl, &cmd, cfg.nsid, cfg.ilbrt, cfg.lbst, cfg.lbat, cfg.lbatm); - if (err) + if (err != 0 && err != -ENAVAIL) return err; err = nvme_submit_io_passthru(hdl, &cmd); if (err < 0)