xref: /aosp_15_r20/external/sg3_utils/COVERAGE (revision 44704f698541f6367e81f991ef8bb54ccbf3fc18)
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