@@ -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