| 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 |
| <most commands> 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 |