1*44704f69SBart Van Assche Command coverage 2*44704f69SBart Van Assche ================ 3*44704f69SBart Van AsscheThe following table lists SCSI commands in alphabetical order on the 4*44704f69SBart Van Asscheleft and the sg3_utils (or related) utilities that implement invocations 5*44704f69SBart Van Asscheof them on the right. The second table lists supported ATA commands. The 6*44704f69SBart Van Asschethird table list supported NVMe commands. 7*44704f69SBart Van Assche 8*44704f69SBart Van AsscheSCSI command sg3_utils utilities that use this SCSI command 9*44704f69SBart Van Assche------------ ------------------------------------------------- 10*44704f69SBart Van AsscheATA COMMAND PASS-THROUGH(12) sg_sat_identify, ++ 11*44704f69SBart Van AsscheATA COMMAND PASS-THROUGH(16) sg_sat_identify, sg_sat_set_features, 12*44704f69SBart Van Assche sg_sat_phy_event, sg_sat_read_gplog ++ 13*44704f69SBart Van Assche [sg_sat_chk_power, sg__sat_identify, 14*44704f69SBart Van Assche sg__sat_set_features, sg_sat_smart_rd_data 15*44704f69SBart Van Assche (previous four in the examples directory)] 16*44704f69SBart Van AsscheATA COMMAND PASS-THROUGH(32) sg_sat_identify, ++ 17*44704f69SBart Van AsscheBACKGROUND CONTROL sg_bg_ctl 18*44704f69SBart Van AsscheCLOSE ZONE sg_zone 19*44704f69SBart Van AsscheCOMPARE AND WRITE sg_compare_and_write 20*44704f69SBart Van AsscheCOPY OPERATION ABORT ddptctl, ++ 21*44704f69SBart Van AsscheEXTENDED COPY(LID1) sg_xcopy, ddpt, ++ 22*44704f69SBart Van AsscheGET CONFIGURATION sg_get_config, ++ 23*44704f69SBart Van AsscheGET LBA STATUS sg_get_lba_status, ++ 24*44704f69SBart Van AsscheGET PHYSICAL ELEMENT STATUS sg_get_elem_status, ++ 25*44704f69SBart Van AsscheGET STREAM STATUS sg_stream_ctl 26*44704f69SBart Van AsscheINQUIRY sg_dd, sg_format, sg_inq, sginfo, 27*44704f69SBart Van Assche sg_logs, sg_map('-i'), sg_modes, sg_opcodes, 28*44704f69SBart Van Assche sg_persist, sg_scan, sg_ses, sg_vpd ++ 29*44704f69SBart Van AsscheFINISH ZONE sg_zone 30*44704f69SBart Van AsscheFORMAT MEDIUM sg_format, ++ [SSC] 31*44704f69SBart Van AsscheFORMAT UNIT sg_format, ++ [SBC] 32*44704f69SBart Van AsscheFORMAT WITH PRESET sg_format, ++ [SBC] 33*44704f69SBart Van AsscheLOG SELECT sg_logs('-r' or '-select'), ++ 34*44704f69SBart Van AsscheLOG SENSE sg_logs, ++ 35*44704f69SBart Van AsscheMODE SELECT(6) sdparm, sg_wr_mode, sginfo, sg_format, 36*44704f69SBart Van Assche sg_emc_trespass, sg_rdac, ++ 37*44704f69SBart Van AsscheMODE SELECT(10) sdparm, sg_wr_mode, sginfo, sg_format, 38*44704f69SBart Van Assche sg_emc_trespass, sg_rdac, ++ 39*44704f69SBart Van AsscheMODE SENSE(6) sdparm, sg_modes, sg_wr_mode, sginfo, sg_format, 40*44704f69SBart Van Assche sg_senddiag('-e'), sg_rdac, ++ 41*44704f69SBart Van AsscheMODE SENSE(10) sdparm, sg_modes, sg_wr_mode, sginfo, sg_format, 42*44704f69SBart Van Assche sg_senddiag('-e'), sg_rdac, ++ 43*44704f69SBart Van AsscheOPEN ZONE sg_zone 44*44704f69SBart Van AsscheORWRITE(16) sg_write_x 45*44704f69SBart Van AsscheORWRITE(32) sg_write_x 46*44704f69SBart Van AsschePERSISTENT RESERVE IN sg_persist, ++ 47*44704f69SBart Van AsschePERSISTENT RESERVE OUT sg_persist, ++ 48*44704f69SBart Van AsschePOPULATE TOKEN ddpt, ddptctl, ++ 49*44704f69SBart Van AsschePRE-FETCH(10) sg_seek 50*44704f69SBart Van AsschePRE-FETCH(16) sg_seek 51*44704f69SBart Van AsschePREVENT ALLOW MEDIUM REMOVAL sg_prevent, ++ 52*44704f69SBart Van AsscheREAD(6) sg_dd, sgm_dd, sgp_dd, sg_read 53*44704f69SBart Van AsscheREAD(10) sg_dd, sgm_dd, sgp_dd, sg_read 54*44704f69SBart Van AsscheREAD(12) sg_dd, sgm_dd, sgp_dd, sg_read 55*44704f69SBart Van AsscheREAD(16) sg_dd, sgm_dd, sgp_dd, sg_read 56*44704f69SBart Van AsscheREAD ATTRIBUTE sg_read_attr 57*44704f69SBart Van AsscheREAD BLOCK LIMITS sg_read_block_limits, ++ 58*44704f69SBart Van AsscheREAD BUFFER(10) sg_rbuf, sg_test_rwbuf, sg_read_buffer, sg_safte, ++ 59*44704f69SBart Van AsscheREAD BUFFER(16) sg_read_buffer 60*44704f69SBart Van AsscheREAD CAPACITY(10) sg_readcap, sg_dd, sgm_dd, sgp_dd, sg_format, ++ 61*44704f69SBart Van AsscheREAD CAPACITY(16) sg_readcap, sg_dd, sgm_dd, sgp_dd, sg_format, ++ 62*44704f69SBart Van AsscheREAD DEFECT(10) sginfo('-d' or '-G'), sg_reassign('-g'), smartmontools, ++ 63*44704f69SBart Van AsscheREAD DEFECT(12) sginfo('-d' or '-G'), smartmontools 64*44704f69SBart Van AsscheREAD LONG(10) sg_read_long, sg_dd, ++ 65*44704f69SBart Van AsscheREAD LONG(16) sg_read_long, ++ 66*44704f69SBart Van AsscheREAD MEDIA SERIAL NUMBER sg_rmsn, ++ 67*44704f69SBart Van AsscheREASSIGN BLOCKS sg_reassign, ++ 68*44704f69SBart Van AsscheRECEIVE COPY DATA(LID1) sg_copy_results, ++ 69*44704f69SBart Van AsscheRECEIVE COPY FAILURE DETAILS(LID1) sg_copy_results, ++ 70*44704f69SBart Van AsscheRECEIVE COPY OPERATING PARAMETERS ddpt, sg_copy_results, sg_xcopy, ++ 71*44704f69SBart Van AsscheRECEIVE COPY STATUS(LID1) sg_copy_results, ++ 72*44704f69SBart Van AsscheRECEIVE DIAGNOSTIC RESULTS sg_senddiag, sg_ses, sg_ses_microcode ++ 73*44704f69SBart Van AsscheRECEIVE ROD TOKEN INFORMATION ddpt, ddptctl ++ 74*44704f69SBart Van AsscheREMOVE ELEMENT AND MODIFY ZONES sg_zone 75*44704f69SBart Van AsscheREMOVE ELEMENT AND TRUNCATE sg_rem_rest_elem 76*44704f69SBart Van AsscheREPORT ALL ROD TOKENS ddptctl ++ 77*44704f69SBart Van AsscheREPORT DENSITY SUPPORT sg_rep_density 78*44704f69SBart Van AsscheREPORT IDENTIFYING INFORMATION sg_ident, ++ (2) 79*44704f69SBart Van AsscheREPORT LUNS sg_luns, ++ 80*44704f69SBart Van AsscheREPORT PROVISIONING INITIALIZATION PATTERN sg_rep_pip, ++ 81*44704f69SBart Van AsscheREPORT REALMS sg_rep_zones 82*44704f69SBart Van AsscheREPORT REFERRALS sg_referrals, ++ 83*44704f69SBart Van AsscheREPORT SUPPORTED OPERATION CODES sg_opcodes 84*44704f69SBart Van AsscheREPORT SUPPORTED TASK MANAGEMENT FUNCTIONS sg_opcodes 85*44704f69SBart Van AsscheREPORT TARGET PORT GROUPS sg_rtpg, sg_stpg ++ 86*44704f69SBart Van AsscheREPORT TIMESTAMP sg_timestamp 87*44704f69SBart Van AsscheREPORT ZONES sg_rep_zones 88*44704f69SBart Van AsscheREPORT ZONE DOMAINS sg_rep_zones 89*44704f69SBart Van AsscheREQUEST SENSE sg_requests, ++ 90*44704f69SBart Van AsscheRESET WRITE POINTER sg_reset_wp 91*44704f69SBart Van AsscheRESTORE ELEMENTS AND REBUILD sg_rem_rest_elem 92*44704f69SBart Van AsscheSANITIZE sg_sanitize 93*44704f69SBart Van AsscheSEEK(10) sg_seek ++ 94*44704f69SBart Van AsscheSEND DIAGNOSTIC sg_senddiag, sg_ses, sg_ses_microcode ++ 95*44704f69SBart Van AsscheSEQUENTIALIZE ZONE sg_zone 96*44704f69SBart Van AsscheSET IDENTIFYING INFORMATION sg_ident, ++ (3) 97*44704f69SBart Van AsscheSET TARGET PORT GROUPS sg_stpg, ++ 98*44704f69SBart Van AsscheSET TIMESTAMP sg_timestamp 99*44704f69SBart Van AsscheSTART STOP sg_start, ++ 100*44704f69SBart Van AsscheSTREAM CONTROL sg_stream_ctl 101*44704f69SBart Van AsscheSYNCHRONIZE CACHE(10) sg_sync, sg_dd, sgm_dd, sgp_dd, ++ 102*44704f69SBart Van AsscheSYNCHRONIZE CACHE(16) sg_sync++ 103*44704f69SBart Van AsscheTEST UNIT READY sg_turs, sg_format, ++ 104*44704f69SBart Van AsscheUNMAP sg_unmap, ++ 105*44704f69SBart Van AsscheVERIFY(10) sg_verify, ++ 106*44704f69SBart Van AsscheVERIFY(16) sg_verify, ++ 107*44704f69SBart Van AsscheWRITE(6) sg_dd, sgm_dd, sgp_dd 108*44704f69SBart Van AsscheWRITE(10) sg_dd, sgm_dd, sgp_dd 109*44704f69SBart Van AsscheWRITE(12) sg_dd, sgm_dd, sgp_dd 110*44704f69SBart Van AsscheWRITE(16) sg_dd, sgm_dd, sgp_dd, sg_write_x 111*44704f69SBart Van AsscheWRITE(32) sg_write_x 112*44704f69SBart Van AsscheWRITE AND VERIFY(10) sg_write_verify 113*44704f69SBart Van AsscheWRITE AND VERIFY(16) sg_write_verify 114*44704f69SBart Van AsscheWRITE ATOMIC(16) ddpt, sg_write_x 115*44704f69SBart Van AsscheWRITE ATOMIC(32) sg_write_x 116*44704f69SBart Van AsscheWRITE BUFFER sg_test_rwbuf, sg_write_buffer, ++ 117*44704f69SBart Van AsscheWRITE LONG(10) sg_write_long, ++ 118*44704f69SBart Van AsscheWRITE LONG(16) sg_write_long, ++ 119*44704f69SBart Van AsscheWRITE SAME(10) sg_write_same 120*44704f69SBart Van AsscheWRITE SAME(16) sg_write_same, sg_write_x 121*44704f69SBart Van AsscheWRITE SAME(32) sg_write_same, sg_write_x 122*44704f69SBart Van AsscheWRITE SCATTERED(16) sg_write_x 123*44704f69SBart Van AsscheWRITE SCATTERED(32) sg_write_x 124*44704f69SBart Van AsscheWRITE STREAM(16) sg_write_x 125*44704f69SBart Van AsscheWRITE STREAM(32) sg_write_x 126*44704f69SBart Van AsscheWRITE USING TOKEN ddpt, ddptctl, ++ 127*44704f69SBart Van AsscheZONE ACTIVATE sg_z_act_query 128*44704f69SBart Van AsscheZONE QUERY sg_z_act_query 129*44704f69SBart Van Assche<most commands> sg_raw 130*44704f69SBart Van Assche 131*44704f69SBart Van Assche 132*44704f69SBart Van AsscheATA command sg3_utils utilities that use this (S)ATA command 133*44704f69SBart Van Assche----------- ------------------------------------------------ 134*44704f69SBart Van AsscheCHECK POWER MODE examples/sg_sat_chk_power 135*44704f69SBart Van AsscheIDENTIFY DEVICE sg_inq, sg_scan, sg_sat_identify, 136*44704f69SBart Van Assche examples/sg__sat_identify 137*44704f69SBart Van AsscheIDENTIFY PACKET DEVICE sg_inq, sg_sat_identify, 138*44704f69SBart Van Assche examples/sg__sat_identify 139*44704f69SBart Van AsscheREAD LOG EXT sg_sat_phy_event, examples/sg__sat_phy_event 140*44704f69SBart Van Assche sg_sat_read_gplog 141*44704f69SBart Van AsscheREAD LOG DMA EXT sg_sat_read_gplog 142*44704f69SBart Van AsscheSET FEATURES sg_sat_set_features 143*44704f69SBart Van Assche examples/sg__sat_set_features 144*44704f69SBart Van AsscheSMART READ DATA examples/sg_sat_smart_rd_data 145*44704f69SBart Van Assche 146*44704f69SBart Van Assche 147*44704f69SBart Van AsscheNVMe command sg3_utils utilities that use this NVMe command 148*44704f69SBart Van Assche------------ ------------------------------------------------ 149*44704f69SBart Van AsscheIdentify sg_inq 150*44704f69SBart Van AsscheSES Read sg_senddiag, sg_ses (NVME-MI command) 151*44704f69SBart Van AsscheSES Write sg_senddiag, sg_ses (NVME-MI command) 152*44704f69SBart Van AsscheDevice self-test [SNTL of SEND DIAGNOSTIC] sg_senddiag 153*44704f69SBart Van AsscheGet features(power management) [SNTL of REQUEST SENSE] sg_requests 154*44704f69SBart Van AsscheRead [SCSI READ(10) -->SNTL--> Read] 155*44704f69SBart Van Assche [SCSI READ(16) -->SNTL--> Read] 156*44704f69SBart Van AsscheWrite [SCSI WRITE(10) -->SNTL--> Write] 157*44704f69SBart Van Assche [SCSI WRITE(16) -->SNTL--> Write] 158*44704f69SBart Van AsscheCompare [SCSI VERIFY(10,BYTCHK=1) -->SNTL--> Compare] 159*44704f69SBart Van Assche [SCSI VERIFY(16,BYTCHK=1) -->SNTL--> Compare] 160*44704f69SBart Van AsscheWrite zeroes [SCSI WRITE SAME(10,zeros) -->SNTL--> Write zeroes] 161*44704f69SBart Van Assche [SCSI WRITE SAME(16,zeros) -->SNTL--> Write zeroes] 162*44704f69SBart Van AsscheFlush [SCSI SYNCHRONIZE CACHE -->SNTL--> Flush] 163*44704f69SBart Van AsscheSet Features [SCSI MODE SELECT(10) -->SNTL--> Set Features] 164*44704f69SBart Van Assche only for WCE in Caching page 165*44704f69SBart Van Assche 166*44704f69SBart Van AsscheThe following SCSI commands do nothing (currently) in the SNTL but 167*44704f69SBart Van Asschedo return GOOD status: TEST UNIT READY, START STOP UNIT, REPORT LUNS 168*44704f69SBart Van Asscheand REQUEST SENSE. READ CAPACITY(10 and 16) yield appropriate data 169*44704f69SBart Van Asscheby examining the response to the NVMe Identify command. 170*44704f69SBart Van Assche 171*44704f69SBart Van Assche 172*44704f69SBart Van Assche++ command wrapper found in sg_cmds_basic.c, sg_cmds_mmc.c or 173*44704f69SBart Van Assche sg_cmds_extra.c for this command 174*44704f69SBart Van Assche(2) this command was known as REPORT DEVICE IDENTIFIER prior to spc4r07 175*44704f69SBart Van Assche(3) this command was known as SET DEVICE IDENTIFIER prior to spc4r07 176*44704f69SBart Van Assche 177*44704f69SBart Van AsscheNote that any SCSI command, including bi-directional and variable length 178*44704f69SBart Van Asschecommands (whose cdb size is > 16 bytes) can be issued by the sg_raw utility. 179*44704f69SBart Van Assche 180*44704f69SBart Van AsscheThe RECEIVE COPY * commands in SPC-4 were grouped as one command name 181*44704f69SBart Van Asschewith 4 service actions in SPC-3 and earlier. The single SPC-3 command 182*44704f69SBart Van Asschename is RECEIVE COPY RESULTS. The two opcodes associated with all 183*44704f69SBart Van AsscheEXTENDED COPY commands are now known as THIRD PARTY COPY IN (0x84) and 184*44704f69SBart Van AsscheTHIRD PARTY COPY IN (0x83). 185*44704f69SBart Van Assche 186*44704f69SBart Van Assche 187*44704f69SBart Van AsscheDouglas Gilbert 188*44704f69SBart Van Assche10 June 2022 189