Command coverage ================ The following table lists SCSI commands in alphabetical order on the left and the sg3_utils (or related) utilities that implement invocations of them on the right. The second table lists supported ATA commands. The third table list supported NVMe commands. SCSI command sg3_utils utilities that use this SCSI command ------------ ------------------------------------------------- ATA COMMAND PASS-THROUGH(12) sg_sat_identify, ++ ATA COMMAND PASS-THROUGH(16) sg_sat_identify, sg_sat_set_features, sg_sat_phy_event, sg_sat_read_gplog ++ [sg_sat_chk_power, sg__sat_identify, sg__sat_set_features, sg_sat_smart_rd_data (previous four in the examples directory)] ATA COMMAND PASS-THROUGH(32) sg_sat_identify, ++ BACKGROUND CONTROL sg_bg_ctl CLOSE ZONE sg_zone COMPARE AND WRITE sg_compare_and_write COPY OPERATION ABORT ddptctl, ++ EXTENDED COPY(LID1) sg_xcopy, ddpt, ++ GET CONFIGURATION sg_get_config, ++ GET LBA STATUS sg_get_lba_status, ++ GET PHYSICAL ELEMENT STATUS sg_get_elem_status, ++ GET STREAM STATUS sg_stream_ctl INQUIRY sg_dd, sg_format, sg_inq, sginfo, sg_logs, sg_map('-i'), sg_modes, sg_opcodes, sg_persist, sg_scan, sg_ses, sg_vpd ++ FINISH ZONE sg_zone FORMAT MEDIUM sg_format, ++ [SSC] FORMAT UNIT sg_format, ++ [SBC] FORMAT WITH PRESET sg_format, ++ [SBC] LOG SELECT sg_logs('-r' or '-select'), ++ LOG SENSE sg_logs, ++ MODE SELECT(6) sdparm, sg_wr_mode, sginfo, sg_format, sg_emc_trespass, sg_rdac, ++ MODE SELECT(10) sdparm, sg_wr_mode, sginfo, sg_format, sg_emc_trespass, sg_rdac, ++ MODE SENSE(6) sdparm, sg_modes, sg_wr_mode, sginfo, sg_format, sg_senddiag('-e'), sg_rdac, ++ MODE SENSE(10) sdparm, sg_modes, sg_wr_mode, sginfo, sg_format, sg_senddiag('-e'), sg_rdac, ++ OPEN ZONE sg_zone ORWRITE(16) sg_write_x ORWRITE(32) sg_write_x PERSISTENT RESERVE IN sg_persist, ++ PERSISTENT RESERVE OUT sg_persist, ++ POPULATE TOKEN ddpt, ddptctl, ++ PRE-FETCH(10) sg_seek PRE-FETCH(16) sg_seek PREVENT ALLOW MEDIUM REMOVAL sg_prevent, ++ READ(6) sg_dd, sgm_dd, sgp_dd, sg_read READ(10) sg_dd, sgm_dd, sgp_dd, sg_read READ(12) sg_dd, sgm_dd, sgp_dd, sg_read READ(16) sg_dd, sgm_dd, sgp_dd, sg_read READ ATTRIBUTE sg_read_attr READ BLOCK LIMITS sg_read_block_limits, ++ READ BUFFER(10) sg_rbuf, sg_test_rwbuf, sg_read_buffer, sg_safte, ++ READ BUFFER(16) sg_read_buffer READ CAPACITY(10) sg_readcap, sg_dd, sgm_dd, sgp_dd, sg_format, ++ READ CAPACITY(16) sg_readcap, sg_dd, sgm_dd, sgp_dd, sg_format, ++ READ DEFECT(10) sginfo('-d' or '-G'), sg_reassign('-g'), smartmontools, ++ READ DEFECT(12) sginfo('-d' or '-G'), smartmontools READ LONG(10) sg_read_long, sg_dd, ++ READ LONG(16) sg_read_long, ++ READ MEDIA SERIAL NUMBER sg_rmsn, ++ REASSIGN BLOCKS sg_reassign, ++ RECEIVE COPY DATA(LID1) sg_copy_results, ++ RECEIVE COPY FAILURE DETAILS(LID1) sg_copy_results, ++ RECEIVE COPY OPERATING PARAMETERS ddpt, sg_copy_results, sg_xcopy, ++ RECEIVE COPY STATUS(LID1) sg_copy_results, ++ RECEIVE DIAGNOSTIC RESULTS sg_senddiag, sg_ses, sg_ses_microcode ++ RECEIVE ROD TOKEN INFORMATION ddpt, ddptctl ++ REMOVE ELEMENT AND MODIFY ZONES sg_zone REMOVE ELEMENT AND TRUNCATE sg_rem_rest_elem REPORT ALL ROD TOKENS ddptctl ++ REPORT DENSITY SUPPORT sg_rep_density REPORT IDENTIFYING INFORMATION sg_ident, ++ (2) REPORT LUNS sg_luns, ++ REPORT PROVISIONING INITIALIZATION PATTERN sg_rep_pip, ++ REPORT REALMS sg_rep_zones REPORT REFERRALS sg_referrals, ++ REPORT SUPPORTED OPERATION CODES sg_opcodes REPORT SUPPORTED TASK MANAGEMENT FUNCTIONS sg_opcodes REPORT TARGET PORT GROUPS sg_rtpg, sg_stpg ++ REPORT TIMESTAMP sg_timestamp REPORT ZONES sg_rep_zones REPORT ZONE DOMAINS sg_rep_zones REQUEST SENSE sg_requests, ++ RESET WRITE POINTER sg_reset_wp RESTORE ELEMENTS AND REBUILD sg_rem_rest_elem SANITIZE sg_sanitize SEEK(10) sg_seek ++ SEND DIAGNOSTIC sg_senddiag, sg_ses, sg_ses_microcode ++ SEQUENTIALIZE ZONE sg_zone SET IDENTIFYING INFORMATION sg_ident, ++ (3) SET TARGET PORT GROUPS sg_stpg, ++ SET TIMESTAMP sg_timestamp START STOP sg_start, ++ STREAM CONTROL sg_stream_ctl SYNCHRONIZE CACHE(10) sg_sync, sg_dd, sgm_dd, sgp_dd, ++ SYNCHRONIZE CACHE(16) sg_sync++ TEST UNIT READY sg_turs, sg_format, ++ UNMAP sg_unmap, ++ VERIFY(10) sg_verify, ++ VERIFY(16) sg_verify, ++ WRITE(6) sg_dd, sgm_dd, sgp_dd WRITE(10) sg_dd, sgm_dd, sgp_dd WRITE(12) sg_dd, sgm_dd, sgp_dd WRITE(16) sg_dd, sgm_dd, sgp_dd, sg_write_x WRITE(32) sg_write_x WRITE AND VERIFY(10) sg_write_verify WRITE AND VERIFY(16) sg_write_verify WRITE ATOMIC(16) ddpt, sg_write_x WRITE ATOMIC(32) sg_write_x WRITE BUFFER sg_test_rwbuf, sg_write_buffer, ++ WRITE LONG(10) sg_write_long, ++ WRITE LONG(16) sg_write_long, ++ WRITE SAME(10) sg_write_same WRITE SAME(16) sg_write_same, sg_write_x WRITE SAME(32) sg_write_same, sg_write_x WRITE SCATTERED(16) sg_write_x WRITE SCATTERED(32) sg_write_x WRITE STREAM(16) sg_write_x WRITE STREAM(32) sg_write_x WRITE USING TOKEN ddpt, ddptctl, ++ ZONE ACTIVATE sg_z_act_query ZONE QUERY sg_z_act_query sg_raw ATA command sg3_utils utilities that use this (S)ATA command ----------- ------------------------------------------------ CHECK POWER MODE examples/sg_sat_chk_power IDENTIFY DEVICE sg_inq, sg_scan, sg_sat_identify, examples/sg__sat_identify IDENTIFY PACKET DEVICE sg_inq, sg_sat_identify, examples/sg__sat_identify READ LOG EXT sg_sat_phy_event, examples/sg__sat_phy_event sg_sat_read_gplog READ LOG DMA EXT sg_sat_read_gplog SET FEATURES sg_sat_set_features examples/sg__sat_set_features SMART READ DATA examples/sg_sat_smart_rd_data NVMe command sg3_utils utilities that use this NVMe command ------------ ------------------------------------------------ Identify sg_inq SES Read sg_senddiag, sg_ses (NVME-MI command) SES Write sg_senddiag, sg_ses (NVME-MI command) Device self-test [SNTL of SEND DIAGNOSTIC] sg_senddiag Get features(power management) [SNTL of REQUEST SENSE] sg_requests Read [SCSI READ(10) -->SNTL--> Read] [SCSI READ(16) -->SNTL--> Read] Write [SCSI WRITE(10) -->SNTL--> Write] [SCSI WRITE(16) -->SNTL--> Write] Compare [SCSI VERIFY(10,BYTCHK=1) -->SNTL--> Compare] [SCSI VERIFY(16,BYTCHK=1) -->SNTL--> Compare] Write zeroes [SCSI WRITE SAME(10,zeros) -->SNTL--> Write zeroes] [SCSI WRITE SAME(16,zeros) -->SNTL--> Write zeroes] Flush [SCSI SYNCHRONIZE CACHE -->SNTL--> Flush] Set Features [SCSI MODE SELECT(10) -->SNTL--> Set Features] only for WCE in Caching page The following SCSI commands do nothing (currently) in the SNTL but do return GOOD status: TEST UNIT READY, START STOP UNIT, REPORT LUNS and REQUEST SENSE. READ CAPACITY(10 and 16) yield appropriate data by examining the response to the NVMe Identify command. ++ command wrapper found in sg_cmds_basic.c, sg_cmds_mmc.c or sg_cmds_extra.c for this command (2) this command was known as REPORT DEVICE IDENTIFIER prior to spc4r07 (3) this command was known as SET DEVICE IDENTIFIER prior to spc4r07 Note that any SCSI command, including bi-directional and variable length commands (whose cdb size is > 16 bytes) can be issued by the sg_raw utility. The RECEIVE COPY * commands in SPC-4 were grouped as one command name with 4 service actions in SPC-3 and earlier. The single SPC-3 command name is RECEIVE COPY RESULTS. The two opcodes associated with all EXTENDED COPY commands are now known as THIRD PARTY COPY IN (0x84) and THIRD PARTY COPY IN (0x83). Douglas Gilbert 10 June 2022