Skip to content

Commit 0ed891c

Browse files
committed
nvme: do not use initialize PI tags unconditionally
submit_io always initializes the PI tags. Only do this if PI is enabled. Signed-off-by: Daniel Wagner <[email protected]>
1 parent 6b3fb6c commit 0ed891c

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

nvme.c

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7211,9 +7211,10 @@ static int get_pi_info(struct nvme_transport_handle *hdl,
72117211

72127212
err = nvme_identify_csi_ns(hdl, nsid, NVME_CSI_NVM, 0,
72137213
nvm_ns);
7214-
if (!err)
7215-
get_pif_sts(ns, nvm_ns, &pif, &sts);
7214+
if (err)
7215+
return -ENAVAIL;
72167216

7217+
get_pif_sts(ns, nvm_ns, &pif, &sts);
72177218
pi_size = (pif == NVME_NVM_PIF_16B_GUARD) ? 8 : 16;
72187219
if (NVME_FLBAS_META_EXT(ns->flbas)) {
72197220
/*
@@ -8135,6 +8136,7 @@ static int submit_io(int opcode, char *command, const char *desc, int argc, char
81358136
__u16 control = 0, nblocks = 0;
81368137
struct nvme_passthru_cmd cmd;
81378138
__u8 sts = 0, pif = 0;
8139+
bool pi_available;
81388140
__u32 dsmgmt = 0;
81398141
int mode = 0644;
81408142
void *buffer;
@@ -8314,12 +8316,16 @@ static int submit_io(int opcode, char *command, const char *desc, int argc, char
83148316
if (cfg.block_size) {
83158317
logical_block_size = cfg.block_size;
83168318
ms = cfg.metadata_size;
8319+
pi_available = true;
83178320
} else {
83188321
err = get_pi_info(hdl, cfg.nsid, cfg.prinfo,
83198322
cfg.ilbrt, cfg.lbst, &logical_block_size, &ms);
83208323
if (err) {
83218324
logical_block_size = 0;
83228325
ms = 0;
8326+
pi_available = false;
8327+
} else {
8328+
pi_available = true;
83238329
}
83248330
}
83258331

@@ -8413,10 +8419,12 @@ static int submit_io(int opcode, char *command, const char *desc, int argc, char
84138419
NVME_FIELD_ENCODE(cfg.dsmgmt,
84148420
NVME_IOCS_COMMON_CDW13_DSM_SHIFT,
84158421
NVME_IOCS_COMMON_CDW13_DSM_MASK);
8416-
err = init_pi_tags(hdl, &cmd, cfg.nsid, cfg.ilbrt, cfg.lbst,
8417-
cfg.lbat, cfg.lbatm);
8418-
if (err)
8419-
return err;
8422+
if (pi_available) {
8423+
err = init_pi_tags(hdl, &cmd, cfg.nsid, cfg.ilbrt, cfg.lbst,
8424+
cfg.lbat, cfg.lbatm);
8425+
if (err)
8426+
return err;
8427+
}
84208428
gettimeofday(&start_time, NULL);
84218429
err = nvme_submit_io_passthru(hdl, &cmd);
84228430
gettimeofday(&end_time, NULL);

0 commit comments

Comments
 (0)