189 lines
8.3 KiB
Plaintext
189 lines
8.3 KiB
Plaintext
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
|