xref: /freebsd/sys/cam/ctl/ctl_cmd_table.c (revision 11b569f7cbcf9635b0559996a6d9f3f7240cc868)
1130f4520SKenneth D. Merry /*-
2130f4520SKenneth D. Merry  * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp.
3130f4520SKenneth D. Merry  * All rights reserved.
4130f4520SKenneth D. Merry  *
5130f4520SKenneth D. Merry  * Redistribution and use in source and binary forms, with or without
6130f4520SKenneth D. Merry  * modification, are permitted provided that the following conditions
7130f4520SKenneth D. Merry  * are met:
8130f4520SKenneth D. Merry  * 1. Redistributions of source code must retain the above copyright
9130f4520SKenneth D. Merry  *    notice, this list of conditions, and the following disclaimer,
10130f4520SKenneth D. Merry  *    without modification.
11130f4520SKenneth D. Merry  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12130f4520SKenneth D. Merry  *    substantially similar to the "NO WARRANTY" disclaimer below
13130f4520SKenneth D. Merry  *    ("Disclaimer") and any redistribution must be conditioned upon
14130f4520SKenneth D. Merry  *    including a substantially similar Disclaimer requirement for further
15130f4520SKenneth D. Merry  *    binary redistribution.
16130f4520SKenneth D. Merry  *
17130f4520SKenneth D. Merry  * NO WARRANTY
18130f4520SKenneth D. Merry  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19130f4520SKenneth D. Merry  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20130f4520SKenneth D. Merry  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
21130f4520SKenneth D. Merry  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22130f4520SKenneth D. Merry  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23130f4520SKenneth D. Merry  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24130f4520SKenneth D. Merry  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25130f4520SKenneth D. Merry  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26130f4520SKenneth D. Merry  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
27130f4520SKenneth D. Merry  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28130f4520SKenneth D. Merry  * POSSIBILITY OF SUCH DAMAGES.
29130f4520SKenneth D. Merry  *
30130f4520SKenneth D. Merry  * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $
31130f4520SKenneth D. Merry  * $FreeBSD$
32130f4520SKenneth D. Merry  */
33130f4520SKenneth D. Merry /*
34130f4520SKenneth D. Merry  * CAM Target Layer command table.
35130f4520SKenneth D. Merry  *
36130f4520SKenneth D. Merry  * Author: Ken Merry <ken@FreeBSD.org>, Kim Le
37130f4520SKenneth D. Merry  */
38130f4520SKenneth D. Merry 
39130f4520SKenneth D. Merry #include <sys/cdefs.h>
40130f4520SKenneth D. Merry #include <sys/param.h>
41130f4520SKenneth D. Merry #include <sys/systm.h>
42130f4520SKenneth D. Merry #include <sys/kernel.h>
43130f4520SKenneth D. Merry #include <sys/types.h>
44130f4520SKenneth D. Merry #include <sys/malloc.h>
45130f4520SKenneth D. Merry #include <sys/condvar.h>
46130f4520SKenneth D. Merry #include <sys/queue.h>
47bf8f8f34SKenneth D. Merry #include <sys/sysctl.h>
48130f4520SKenneth D. Merry 
49130f4520SKenneth D. Merry #include <cam/scsi/scsi_all.h>
50130f4520SKenneth D. Merry #include <cam/scsi/scsi_da.h>
51130f4520SKenneth D. Merry #include <cam/ctl/ctl_io.h>
52130f4520SKenneth D. Merry #include <cam/ctl/ctl.h>
53130f4520SKenneth D. Merry #include <cam/ctl/ctl_frontend.h>
54130f4520SKenneth D. Merry #include <cam/ctl/ctl_backend.h>
55130f4520SKenneth D. Merry #include <cam/ctl/ctl_frontend_internal.h>
56130f4520SKenneth D. Merry #include <cam/ctl/ctl_ioctl.h>
57130f4520SKenneth D. Merry #include <cam/ctl/ctl_ha.h>
58130f4520SKenneth D. Merry #include <cam/ctl/ctl_private.h>
59130f4520SKenneth D. Merry 
60130f4520SKenneth D. Merry /*
61130f4520SKenneth D. Merry  * Whenever support for a new command is added, it should be added to this
62130f4520SKenneth D. Merry  * table.
63130f4520SKenneth D. Merry  */
64130f4520SKenneth D. Merry struct ctl_cmd_entry ctl_cmd_table[] =
65130f4520SKenneth D. Merry {
66130f4520SKenneth D. Merry /* 00 TEST UNIT READY */
67130f4520SKenneth D. Merry {ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
68130f4520SKenneth D. Merry 			  CTL_FLAG_DATA_NONE |
69130f4520SKenneth D. Merry 			  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
70130f4520SKenneth D. Merry  CTL_LUN_PAT_TUR},
71130f4520SKenneth D. Merry 
72130f4520SKenneth D. Merry /* 01 REWIND */
73130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
74130f4520SKenneth D. Merry 
75130f4520SKenneth D. Merry /* 02 */
76130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
77130f4520SKenneth D. Merry 
78130f4520SKenneth D. Merry /* 03 REQUEST SENSE */
79130f4520SKenneth D. Merry {ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
80130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_ALL_LUNS |
81130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_ALLOW_ON_RESV |
82130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_NO_SENSE |
83130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_STOPPED |
84130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
85130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_OFFLINE |
86130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_SECONDARY |
87130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
88130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
89130f4520SKenneth D. Merry 
90130f4520SKenneth D. Merry /* 04 FORMAT UNIT */
91130f4520SKenneth D. Merry {ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN |
92130f4520SKenneth D. Merry 				CTL_CMD_FLAG_OK_ON_INOPERABLE |
93130f4520SKenneth D. Merry 				CTL_FLAG_DATA_OUT,
94130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
95130f4520SKenneth D. Merry 
96130f4520SKenneth D. Merry /* 05 READ BLOCK LIMITS */
97130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
98130f4520SKenneth D. Merry 
99130f4520SKenneth D. Merry /* 06 */
100130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
101130f4520SKenneth D. Merry 
102130f4520SKenneth D. Merry /* 07 REASSIGN BLOCKS */
103130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
104130f4520SKenneth D. Merry 
105130f4520SKenneth D. Merry /* 08 READ(6) */
106130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
107130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_IN |
108130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
109130f4520SKenneth D. Merry  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
110130f4520SKenneth D. Merry 
111130f4520SKenneth D. Merry /* 09 */
112130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
113130f4520SKenneth D. Merry 
114130f4520SKenneth D. Merry /* 0A WRITE(6) */
115130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
116130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_OUT,
117130f4520SKenneth D. Merry  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
118130f4520SKenneth D. Merry 
119130f4520SKenneth D. Merry /* 0B SEEK(6) */
120130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
121130f4520SKenneth D. Merry 
122130f4520SKenneth D. Merry /* 0C */
123130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
124130f4520SKenneth D. Merry 
125130f4520SKenneth D. Merry /* 0D */
126130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
127130f4520SKenneth D. Merry 
128130f4520SKenneth D. Merry /* 0E */
129130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
130130f4520SKenneth D. Merry 
131130f4520SKenneth D. Merry /* 0F READ REVERSE(6) */
132130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
133130f4520SKenneth D. Merry 
134130f4520SKenneth D. Merry /* 10 WRITE FILEMARKS(6) */
135130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
136130f4520SKenneth D. Merry 
137130f4520SKenneth D. Merry /* 11 SPACE(6) */
138130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
139130f4520SKenneth D. Merry 
140130f4520SKenneth D. Merry /* 12 INQUIRY */
141130f4520SKenneth D. Merry {ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
142130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_ALLOW_ON_RESV |
143130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_NO_SENSE |
144130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_OK_ON_STOPPED |
145130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_OK_ON_INOPERABLE |
146130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_OK_ON_OFFLINE |
147130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_OK_ON_SECONDARY |
148130f4520SKenneth D. Merry 			      CTL_FLAG_DATA_IN |
149130f4520SKenneth D. Merry 			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
150130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
151130f4520SKenneth D. Merry 
152130f4520SKenneth D. Merry /* 13 */
153130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
154130f4520SKenneth D. Merry 
155130f4520SKenneth D. Merry /* 14 RECOVER BUFFERED DATA */
156130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
157130f4520SKenneth D. Merry 
158130f4520SKenneth D. Merry /* 15 MODE SELECT(6) */
159130f4520SKenneth D. Merry {ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
160130f4520SKenneth D. Merry 				     CTL_CMD_FLAG_OK_ON_STOPPED |
161130f4520SKenneth D. Merry 				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
162130f4520SKenneth D. Merry 				     CTL_CMD_FLAG_OK_ON_SECONDARY |
163130f4520SKenneth D. Merry 				     CTL_FLAG_DATA_OUT,
164130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
165130f4520SKenneth D. Merry 
166130f4520SKenneth D. Merry /* 16 RESERVE(6) */
167130f4520SKenneth D. Merry {ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV |
168130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_BOTH |
169130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_STOPPED |
170130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
171130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_SECONDARY |
172130f4520SKenneth D. Merry 				    CTL_FLAG_DATA_OUT,
173130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
174130f4520SKenneth D. Merry 
175130f4520SKenneth D. Merry /* 17 RELEASE(6) */
176130f4520SKenneth D. Merry {ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV |
177130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_BOTH |
178130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_STOPPED |
179130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
180130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_SECONDARY |
181130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_NONE,
182130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
183130f4520SKenneth D. Merry 
184130f4520SKenneth D. Merry /* 18 COPY */
185130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
186130f4520SKenneth D. Merry 
187130f4520SKenneth D. Merry /* 19 ERASE(6) */
188130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
189130f4520SKenneth D. Merry 
190130f4520SKenneth D. Merry /* 1A MODE SENSE(6) */
191130f4520SKenneth D. Merry {ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
192130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_STOPPED |
193130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
194130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_SECONDARY |
195130f4520SKenneth D. Merry 				    CTL_FLAG_DATA_IN,
196130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
197130f4520SKenneth D. Merry 
198130f4520SKenneth D. Merry /* 1B START STOP UNIT */
199130f4520SKenneth D. Merry {ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
200130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_STOPPED |
201130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
202130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_OFFLINE |
203130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_NONE |
204130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
205130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
206130f4520SKenneth D. Merry 
207130f4520SKenneth D. Merry /* 1C RECEIVE DIAGNOSTIC RESULTS */
208130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
209130f4520SKenneth D. Merry 
210130f4520SKenneth D. Merry /* 1D SEND DIAGNOSTIC */
211130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
212130f4520SKenneth D. Merry 
213130f4520SKenneth D. Merry /* 1E PREVENT ALLOW MEDIUM REMOVAL */
214130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
215130f4520SKenneth D. Merry 
216130f4520SKenneth D. Merry /* 1F */
217130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
218130f4520SKenneth D. Merry 
219130f4520SKenneth D. Merry /* 20 */
220130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
221130f4520SKenneth D. Merry 
222130f4520SKenneth D. Merry /* 21 */
223130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
224130f4520SKenneth D. Merry 
225130f4520SKenneth D. Merry /* 22 */
226130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
227130f4520SKenneth D. Merry 
228130f4520SKenneth D. Merry /* 23 */
229130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
230130f4520SKenneth D. Merry 
231130f4520SKenneth D. Merry /* 24 SET WINDOW */
232130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
233130f4520SKenneth D. Merry 
234130f4520SKenneth D. Merry /* 25 READ CAPACITY(10) */
235130f4520SKenneth D. Merry {ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN|
236130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_STOPPED |
237130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
238130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_OK_ON_SECONDARY |
239130f4520SKenneth D. Merry 				       CTL_FLAG_DATA_IN |
240130f4520SKenneth D. Merry 				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
241130f4520SKenneth D. Merry  CTL_LUN_PAT_READCAP},
242130f4520SKenneth D. Merry 
243130f4520SKenneth D. Merry /* 26 */
244130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
245130f4520SKenneth D. Merry 
246130f4520SKenneth D. Merry /* 27 */
247130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
248130f4520SKenneth D. Merry 
249130f4520SKenneth D. Merry /* 28 READ(10) */
250130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
251130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_IN |
252130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
253130f4520SKenneth D. Merry  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
254130f4520SKenneth D. Merry 
255130f4520SKenneth D. Merry /* 29 READ GENERATION */
256130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
257130f4520SKenneth D. Merry 
258130f4520SKenneth D. Merry /* 2A WRITE(10) */
259130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
260130f4520SKenneth D. Merry  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
261130f4520SKenneth D. Merry 
262130f4520SKenneth D. Merry /* 2B SEEK(10) */
263130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
264130f4520SKenneth D. Merry 
265130f4520SKenneth D. Merry /* 2C ERASE(10) */
266130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
267130f4520SKenneth D. Merry 
268130f4520SKenneth D. Merry /* 2D READ UPDATED BLOCK */
269130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
270130f4520SKenneth D. Merry 
271130f4520SKenneth D. Merry /* 2E WRITE AND VERIFY(10) */
272130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
273130f4520SKenneth D. Merry  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
274130f4520SKenneth D. Merry 
275130f4520SKenneth D. Merry /* 2F VERIFY(10) */
276*11b569f7SAlexander Motin {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
277*11b569f7SAlexander Motin 			      CTL_FLAG_DATA_OUT |
278*11b569f7SAlexander Motin 			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
279*11b569f7SAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
280130f4520SKenneth D. Merry 
281130f4520SKenneth D. Merry /* 30 SEARCH DATA HIGH(10) */
282130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
283130f4520SKenneth D. Merry 
284130f4520SKenneth D. Merry /* 31 SEARCH DATA EQUAL(10) */
285130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
286130f4520SKenneth D. Merry 
287130f4520SKenneth D. Merry /* 32 SEARCH DATA LOW(10) */
288130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
289130f4520SKenneth D. Merry 
290130f4520SKenneth D. Merry /* 33 SET LIMITS(10) */
291130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
292130f4520SKenneth D. Merry 
293130f4520SKenneth D. Merry /* 34 PRE-FETCH(10) */
294130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
295130f4520SKenneth D. Merry 
296130f4520SKenneth D. Merry /* 35 SYNCHRONIZE CACHE(10) */
297130f4520SKenneth D. Merry {ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
298130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_NONE,
299130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
300130f4520SKenneth D. Merry 
301130f4520SKenneth D. Merry /* 36 LOCK UNLOCK CACHE(10) */
302130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
303130f4520SKenneth D. Merry 
304130f4520SKenneth D. Merry /* 37 READ DEFECT DATA(10) */
305130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
306130f4520SKenneth D. Merry 
307130f4520SKenneth D. Merry /* 38 MEDIUM SCAN */
308130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
309130f4520SKenneth D. Merry 
310130f4520SKenneth D. Merry /* 39 COMPARE */
311130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
312130f4520SKenneth D. Merry 
313130f4520SKenneth D. Merry /* 3A COPY AND VERIFY */
314130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
315130f4520SKenneth D. Merry 
316130f4520SKenneth D. Merry /* 3B WRITE BUFFER */
317130f4520SKenneth D. Merry {ctl_write_buffer, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_PROC |
318130f4520SKenneth D. Merry 				     CTL_FLAG_DATA_OUT,
319130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
320130f4520SKenneth D. Merry 
321130f4520SKenneth D. Merry /* 3C READ BUFFER */
322130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
323130f4520SKenneth D. Merry 
324130f4520SKenneth D. Merry /* 3D UPDATE BLOCK */
325130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
326130f4520SKenneth D. Merry 
327130f4520SKenneth D. Merry /* 3E READ LONG */
328130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
329130f4520SKenneth D. Merry 
330130f4520SKenneth D. Merry /* 3F WRITE LONG */
331130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
332130f4520SKenneth D. Merry 
333130f4520SKenneth D. Merry /* 40 CHANGE DEFINITION */
334130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
335130f4520SKenneth D. Merry 
336130f4520SKenneth D. Merry /* 41 WRITE SAME(10) */
337ee7f31c0SAlexander Motin {ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
338ee7f31c0SAlexander Motin 				   CTL_FLAG_DATA_OUT,
339ee7f31c0SAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
340130f4520SKenneth D. Merry 
341ee7f31c0SAlexander Motin /* 42 READ SUB-CHANNEL / UNMAP */
342004008d6SAlexander Motin {ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT,
343ee7f31c0SAlexander Motin  CTL_LUN_PAT_WRITE},
344130f4520SKenneth D. Merry 
345130f4520SKenneth D. Merry /* 43 READ TOC/PMA/ATIP */
346130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
347130f4520SKenneth D. Merry 
348130f4520SKenneth D. Merry /* 44 REPORT DENSITY SUPPORT */
349130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
350130f4520SKenneth D. Merry 
351130f4520SKenneth D. Merry /* 45 PLAY AUDIO(10) */
352130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
353130f4520SKenneth D. Merry 
354130f4520SKenneth D. Merry /* 46 GET CONFIGURATION */
355130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
356130f4520SKenneth D. Merry 
357130f4520SKenneth D. Merry /* 47 PLAY AUDIO MSF */
358130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
359130f4520SKenneth D. Merry 
360130f4520SKenneth D. Merry /* 48 PLAY AUDIO TRACK INDEX */
361130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
362130f4520SKenneth D. Merry 
363130f4520SKenneth D. Merry /* 49 PLAY TRACK RELATIVE(10) */
364130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
365130f4520SKenneth D. Merry 
366130f4520SKenneth D. Merry /* 4A GET EVENT STATUS NOTIFICATION */
367130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
368130f4520SKenneth D. Merry 
369130f4520SKenneth D. Merry /* 4B PAUSE/RESUME */
370130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
371130f4520SKenneth D. Merry 
372130f4520SKenneth D. Merry /* 4C LOG SELECT */
373130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
374130f4520SKenneth D. Merry 
375130f4520SKenneth D. Merry /* 4D LOG SENSE */
376130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
377130f4520SKenneth D. Merry 
378130f4520SKenneth D. Merry /* 4E STOP PLAY/SCAN */
379130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
380130f4520SKenneth D. Merry 
381130f4520SKenneth D. Merry /* 4F */
382130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
383130f4520SKenneth D. Merry 
384130f4520SKenneth D. Merry /* 50 XDWRITE(10) */
385130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
386130f4520SKenneth D. Merry 
387130f4520SKenneth D. Merry /* 51 XPWRITE(10) */
388130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
389130f4520SKenneth D. Merry 
390130f4520SKenneth D. Merry /* 52 XDREAD(10) */
391130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
392130f4520SKenneth D. Merry 
393130f4520SKenneth D. Merry /* 53 RESERVE TRACK */
394130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
395130f4520SKenneth D. Merry 
396130f4520SKenneth D. Merry /* 54 SEND OPC INFORMATION */
397130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
398130f4520SKenneth D. Merry 
399130f4520SKenneth D. Merry /* 55 MODE SELECT(10) */
400130f4520SKenneth D. Merry {ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
401130f4520SKenneth D. Merry 				     CTL_CMD_FLAG_OK_ON_STOPPED |
402130f4520SKenneth D. Merry 				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
403130f4520SKenneth D. Merry 				     CTL_CMD_FLAG_OK_ON_SECONDARY |
404130f4520SKenneth D. Merry 				     CTL_FLAG_DATA_OUT,
405130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
406130f4520SKenneth D. Merry 
407130f4520SKenneth D. Merry /* 56 RESERVE(10) */
408130f4520SKenneth D. Merry {ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV |
409130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_BOTH |
410130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_STOPPED |
411130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
412130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_SECONDARY |
413130f4520SKenneth D. Merry 				    CTL_FLAG_DATA_OUT,
414130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
415130f4520SKenneth D. Merry 
416130f4520SKenneth D. Merry /* 57 RELEASE(10) */
417130f4520SKenneth D. Merry {ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV |
418130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_BOTH |
419130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_STOPPED |
420130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
421130f4520SKenneth D. Merry 				   CTL_CMD_FLAG_OK_ON_SECONDARY |
422130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_OUT,
423130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
424130f4520SKenneth D. Merry 
425130f4520SKenneth D. Merry /* 58 REPAIR TRACK */
426130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
427130f4520SKenneth D. Merry 
428130f4520SKenneth D. Merry /* 59 READ MASTER CUE */
429130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
430130f4520SKenneth D. Merry 
431130f4520SKenneth D. Merry /* 5A MODE SENSE(10) */
432130f4520SKenneth D. Merry {ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
433130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_STOPPED |
434130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
435130f4520SKenneth D. Merry 				    CTL_CMD_FLAG_OK_ON_SECONDARY |
436130f4520SKenneth D. Merry 				    CTL_FLAG_DATA_IN,
437130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
438130f4520SKenneth D. Merry 
439130f4520SKenneth D. Merry /* 5B CLOSE TRACK/SESSION */
440130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
441130f4520SKenneth D. Merry 
442130f4520SKenneth D. Merry /* 5C READ BUFFER CAPACITY */
443130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
444130f4520SKenneth D. Merry 
445130f4520SKenneth D. Merry /* 5D SEND CUE SHEET */
446130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
447130f4520SKenneth D. Merry 
448130f4520SKenneth D. Merry /* 5E PERSISTENT RESERVE IN */
449130f4520SKenneth D. Merry {ctl_persistent_reserve_in, CTL_SERIDX_PRES_IN, CTL_CMD_FLAG_ALLOW_ON_RESV |
450130f4520SKenneth D. Merry 						CTL_CMD_FLAG_OK_ON_BOTH |
451130f4520SKenneth D. Merry 						CTL_CMD_FLAG_OK_ON_STOPPED |
452130f4520SKenneth D. Merry 						CTL_CMD_FLAG_OK_ON_INOPERABLE |
453130f4520SKenneth D. Merry 						CTL_CMD_FLAG_OK_ON_SECONDARY |
454130f4520SKenneth D. Merry 						CTL_FLAG_DATA_IN |
455130f4520SKenneth D. Merry 						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
456130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
457130f4520SKenneth D. Merry 
458130f4520SKenneth D. Merry //{ctl_persistent_reserve_in, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
459130f4520SKenneth D. Merry 
460130f4520SKenneth D. Merry /* 5F PERSISTENT RESERVE OUT */
461130f4520SKenneth D. Merry {ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV |
462130f4520SKenneth D. Merry 						  CTL_CMD_FLAG_OK_ON_BOTH |
463130f4520SKenneth D. Merry 						  CTL_CMD_FLAG_OK_ON_STOPPED |
464130f4520SKenneth D. Merry 						  CTL_CMD_FLAG_OK_ON_INOPERABLE|
465130f4520SKenneth D. Merry 						  CTL_CMD_FLAG_OK_ON_SECONDARY |
466130f4520SKenneth D. Merry 						  CTL_FLAG_DATA_OUT |
467130f4520SKenneth D. Merry 						  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
468130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
469130f4520SKenneth D. Merry 
470130f4520SKenneth D. Merry //{ctl_persistent_reserve_out, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
471130f4520SKenneth D. Merry 
472130f4520SKenneth D. Merry /* 60 */
473130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
474130f4520SKenneth D. Merry 
475130f4520SKenneth D. Merry /* 61 */
476130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
477130f4520SKenneth D. Merry 
478130f4520SKenneth D. Merry /* 62 */
479130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
480130f4520SKenneth D. Merry 
481130f4520SKenneth D. Merry /* 63 */
482130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
483130f4520SKenneth D. Merry 
484130f4520SKenneth D. Merry /* 64 */
485130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
486130f4520SKenneth D. Merry 
487130f4520SKenneth D. Merry /* 65 */
488130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
489130f4520SKenneth D. Merry 
490130f4520SKenneth D. Merry /* 66 */
491130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
492130f4520SKenneth D. Merry 
493130f4520SKenneth D. Merry /* 67 */
494130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
495130f4520SKenneth D. Merry 
496130f4520SKenneth D. Merry /* 68 */
497130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
498130f4520SKenneth D. Merry 
499130f4520SKenneth D. Merry /* 69 */
500130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
501130f4520SKenneth D. Merry 
502130f4520SKenneth D. Merry /* 6A */
503130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
504130f4520SKenneth D. Merry 
505130f4520SKenneth D. Merry /* 6B */
506130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
507130f4520SKenneth D. Merry 
508130f4520SKenneth D. Merry /* 6C */
509130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
510130f4520SKenneth D. Merry 
511130f4520SKenneth D. Merry /* 6D */
512130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
513130f4520SKenneth D. Merry 
514130f4520SKenneth D. Merry /* 6E */
515130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
516130f4520SKenneth D. Merry 
517130f4520SKenneth D. Merry /* 6F */
518130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
519130f4520SKenneth D. Merry 
520130f4520SKenneth D. Merry /* 70 */
521130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
522130f4520SKenneth D. Merry 
523130f4520SKenneth D. Merry /* 71 */
524130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
525130f4520SKenneth D. Merry 
526130f4520SKenneth D. Merry /* 72 */
527130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
528130f4520SKenneth D. Merry 
529130f4520SKenneth D. Merry /* 73 */
530130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
531130f4520SKenneth D. Merry 
532130f4520SKenneth D. Merry /* 74 */
533130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
534130f4520SKenneth D. Merry 
535130f4520SKenneth D. Merry /* 75 */
536130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
537130f4520SKenneth D. Merry 
538130f4520SKenneth D. Merry /* 76 */
539130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
540130f4520SKenneth D. Merry 
541130f4520SKenneth D. Merry /* 77 */
542130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
543130f4520SKenneth D. Merry 
544130f4520SKenneth D. Merry /* 78 */
545130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
546130f4520SKenneth D. Merry 
547130f4520SKenneth D. Merry /* 79 */
548130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
549130f4520SKenneth D. Merry 
550130f4520SKenneth D. Merry /* 7A */
551130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
552130f4520SKenneth D. Merry 
553130f4520SKenneth D. Merry /* 7B */
554130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
555130f4520SKenneth D. Merry 
556130f4520SKenneth D. Merry /* 7C */
557130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
558130f4520SKenneth D. Merry 
559130f4520SKenneth D. Merry /* 7D */
560130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
561130f4520SKenneth D. Merry 
562130f4520SKenneth D. Merry /* 7E */
563130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
564130f4520SKenneth D. Merry 
565130f4520SKenneth D. Merry /* 7F */
566130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
567130f4520SKenneth D. Merry 
568130f4520SKenneth D. Merry /* 80 XDWRITE EXTENDED(16) */
569130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
570130f4520SKenneth D. Merry 
571130f4520SKenneth D. Merry /* 81 REBUILD(16) */
572130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
573130f4520SKenneth D. Merry 
574130f4520SKenneth D. Merry /* 82 REGENERATE(16) */
575130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
576130f4520SKenneth D. Merry 
577130f4520SKenneth D. Merry /* 83 EXTENDED COPY */
578130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
579130f4520SKenneth D. Merry 
580130f4520SKenneth D. Merry /* 84 RECEIVE COPY RESULTS */
581130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
582130f4520SKenneth D. Merry 
583130f4520SKenneth D. Merry /* 85 */
584130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
585130f4520SKenneth D. Merry 
586130f4520SKenneth D. Merry /* 86 ACCESS CONTROL IN */
587130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
588130f4520SKenneth D. Merry 
589130f4520SKenneth D. Merry /* 87 ACCESS CONTROL OUT */
590130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
591130f4520SKenneth D. Merry 
592130f4520SKenneth D. Merry /* 88 READ(16) */
593130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
594130f4520SKenneth D. Merry                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
595130f4520SKenneth D. Merry  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
596130f4520SKenneth D. Merry 
597*11b569f7SAlexander Motin /* 89 COMPARE AND WRITE */
598*11b569f7SAlexander Motin {ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
599*11b569f7SAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
600130f4520SKenneth D. Merry 
601130f4520SKenneth D. Merry /* 8A WRITE(16) */
602130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
603130f4520SKenneth D. Merry  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
604130f4520SKenneth D. Merry 
605130f4520SKenneth D. Merry /* 8B */
606130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
607130f4520SKenneth D. Merry 
608130f4520SKenneth D. Merry /* 8C READ ATTRIBUTE */
609130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
610130f4520SKenneth D. Merry 
611130f4520SKenneth D. Merry /* 8D WRITE ATTRIBUTE */
612130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
613130f4520SKenneth D. Merry 
614130f4520SKenneth D. Merry /* 8E WRITE AND VERIFY(16) */
615130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
616130f4520SKenneth D. Merry  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
617130f4520SKenneth D. Merry 
618130f4520SKenneth D. Merry /* 8F VERIFY(16) */
619*11b569f7SAlexander Motin {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
620*11b569f7SAlexander Motin 			      CTL_FLAG_DATA_OUT |
621*11b569f7SAlexander Motin 			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
622*11b569f7SAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
623130f4520SKenneth D. Merry 
624130f4520SKenneth D. Merry /* 90 PRE-FETCH(16) */
625130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
626130f4520SKenneth D. Merry 
627130f4520SKenneth D. Merry /* 91 SYNCHRONIZE CACHE(16) */
628130f4520SKenneth D. Merry {ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
629130f4520SKenneth D. Merry 				   CTL_FLAG_DATA_NONE,
630130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
631130f4520SKenneth D. Merry 
632130f4520SKenneth D. Merry /* 92 LOCK UNLOCK CACHE(16) */
633130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
634130f4520SKenneth D. Merry 
635130f4520SKenneth D. Merry /* 93 WRITE SAME(16) */
636ee7f31c0SAlexander Motin {ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
637ee7f31c0SAlexander Motin 				   CTL_FLAG_DATA_OUT,
638ee7f31c0SAlexander Motin  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
639130f4520SKenneth D. Merry 
640130f4520SKenneth D. Merry /* 94 */
641130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
642130f4520SKenneth D. Merry 
643130f4520SKenneth D. Merry /* 95 */
644130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
645130f4520SKenneth D. Merry 
646130f4520SKenneth D. Merry /* 96 */
647130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
648130f4520SKenneth D. Merry 
649130f4520SKenneth D. Merry /* 97 */
650130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
651130f4520SKenneth D. Merry 
652130f4520SKenneth D. Merry /* 98 */
653130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
654130f4520SKenneth D. Merry 
655130f4520SKenneth D. Merry /* 99 */
656130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
657130f4520SKenneth D. Merry 
658130f4520SKenneth D. Merry /* 9A */
659130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
660130f4520SKenneth D. Merry 
661130f4520SKenneth D. Merry /* 9B */
662130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
663130f4520SKenneth D. Merry 
664130f4520SKenneth D. Merry /* 9C */
665130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
666130f4520SKenneth D. Merry 
667130f4520SKenneth D. Merry /* 9D */
668130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
669130f4520SKenneth D. Merry 
670130f4520SKenneth D. Merry /* 9E SERVICE ACTION IN(16) */
671130f4520SKenneth D. Merry /* XXX KDM not all service actions will be read capacity!! */
672130f4520SKenneth D. Merry {ctl_service_action_in, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
673130f4520SKenneth D. Merry 					   CTL_CMD_FLAG_OK_ON_STOPPED |
674130f4520SKenneth D. Merry 					   CTL_CMD_FLAG_OK_ON_INOPERABLE |
675130f4520SKenneth D. Merry 					   CTL_CMD_FLAG_OK_ON_SECONDARY |
676130f4520SKenneth D. Merry 					   CTL_FLAG_DATA_IN |
677130f4520SKenneth D. Merry 					   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
678130f4520SKenneth D. Merry  CTL_LUN_PAT_READCAP},
679130f4520SKenneth D. Merry 
680130f4520SKenneth D. Merry /* 9F SERVICE ACTION OUT(16) */
681130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
682130f4520SKenneth D. Merry 
683130f4520SKenneth D. Merry /* A0 REPORT LUNS */
684130f4520SKenneth D. Merry {ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
685130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_ALLOW_ON_RESV |
686130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_NO_SENSE |
687130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_OK_ON_STOPPED |
688130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_OK_ON_INOPERABLE |
689130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_OK_ON_OFFLINE |
690130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_OK_ON_SECONDARY |
691130f4520SKenneth D. Merry 				  CTL_FLAG_DATA_IN |
692130f4520SKenneth D. Merry 				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
693130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
694130f4520SKenneth D. Merry 
695130f4520SKenneth D. Merry /* A1 BLANK */
696130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
697130f4520SKenneth D. Merry 
698130f4520SKenneth D. Merry /* A2 SEND EVENT */
699130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
700130f4520SKenneth D. Merry 
701130f4520SKenneth D. Merry /* A3 MAINTENANCE (IN) Service Action - (0A) REPORT TARGET PORT GROUP */
702130f4520SKenneth D. Merry {ctl_maintenance_in, CTL_SERIDX_MAIN_IN, CTL_CMD_FLAG_OK_ON_BOTH |
703130f4520SKenneth D. Merry 				         CTL_CMD_FLAG_OK_ON_STOPPED |
704130f4520SKenneth D. Merry 				         CTL_CMD_FLAG_OK_ON_INOPERABLE |
705130f4520SKenneth D. Merry 				         CTL_CMD_FLAG_OK_ON_SECONDARY |
706130f4520SKenneth D. Merry 				         CTL_FLAG_DATA_IN,
707130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
708130f4520SKenneth D. Merry 
709130f4520SKenneth D. Merry /* A4 MAINTENANCE (OUT) */
710130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
711130f4520SKenneth D. Merry 
712130f4520SKenneth D. Merry /* A5 MOVE MEDIUM */
713130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
714130f4520SKenneth D. Merry 
715130f4520SKenneth D. Merry /* A6 EXCHANGE MEDIUM */
716130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
717130f4520SKenneth D. Merry 
718130f4520SKenneth D. Merry /* A7 MOVE MEDIUM ATTACHED */
719130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
720130f4520SKenneth D. Merry 
721130f4520SKenneth D. Merry /* A8 READ(12) */
722130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
723130f4520SKenneth D. Merry                                   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
724130f4520SKenneth D. Merry  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
725130f4520SKenneth D. Merry 
726130f4520SKenneth D. Merry /* A9 PLAY TRACK RELATIVE(12) */
727130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
728130f4520SKenneth D. Merry 
729130f4520SKenneth D. Merry /* AA WRITE(12) */
730130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
731130f4520SKenneth D. Merry  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
732130f4520SKenneth D. Merry 
733130f4520SKenneth D. Merry /* AB SERVICE ACTION IN(12) */
734130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
735130f4520SKenneth D. Merry 
736130f4520SKenneth D. Merry /* AC ERASE(12) */
737130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
738130f4520SKenneth D. Merry 
739130f4520SKenneth D. Merry /* AD READ DVD STRUCTURE */
740130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
741130f4520SKenneth D. Merry 
742130f4520SKenneth D. Merry /* AE WRITE AND VERIFY(12) */
743130f4520SKenneth D. Merry {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
744130f4520SKenneth D. Merry  CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
745130f4520SKenneth D. Merry 
746130f4520SKenneth D. Merry /* AF VERIFY(12) */
747*11b569f7SAlexander Motin {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
748*11b569f7SAlexander Motin 			      CTL_FLAG_DATA_OUT |
749*11b569f7SAlexander Motin 			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
750*11b569f7SAlexander Motin  CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
751130f4520SKenneth D. Merry 
752130f4520SKenneth D. Merry /* B0 SEARCH DATA HIGH(12) */
753130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
754130f4520SKenneth D. Merry 
755130f4520SKenneth D. Merry /* B1 SEARCH DATA EQUAL(12) */
756130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
757130f4520SKenneth D. Merry 
758130f4520SKenneth D. Merry /* B2 SEARCH DATA LOW(12) */
759130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
760130f4520SKenneth D. Merry 
761130f4520SKenneth D. Merry /* B3 SET LIMITS(12) */
762130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
763130f4520SKenneth D. Merry 
764130f4520SKenneth D. Merry /* B4 READ ELEMENT STATUS ATTACHED */
765130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
766130f4520SKenneth D. Merry 
767130f4520SKenneth D. Merry /* B5 REQUEST VOLUME ELEMENT ADDRESS */
768130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
769130f4520SKenneth D. Merry 
770130f4520SKenneth D. Merry /* B6 SEND VOLUME TAG */
771130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
772130f4520SKenneth D. Merry 
773130f4520SKenneth D. Merry /* B7 READ DEFECT DATA(12) */
774130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
775130f4520SKenneth D. Merry 
776130f4520SKenneth D. Merry /* B8 READ ELEMENT STATUS */
777130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
778130f4520SKenneth D. Merry 
779130f4520SKenneth D. Merry /* B9 READ CD MSF */
780130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
781130f4520SKenneth D. Merry 
782130f4520SKenneth D. Merry /* BA REDUNDANCY GROUP (IN) */
783130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
784130f4520SKenneth D. Merry 
785130f4520SKenneth D. Merry /* BB REDUNDANCY GROUP (OUT) */
786130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
787130f4520SKenneth D. Merry 
788130f4520SKenneth D. Merry /* BC SPARE (IN) */
789130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
790130f4520SKenneth D. Merry 
791130f4520SKenneth D. Merry /* BD SPARE (OUT) */
792130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
793130f4520SKenneth D. Merry 
794130f4520SKenneth D. Merry /* BE VOLUME SET (IN) */
795130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
796130f4520SKenneth D. Merry 
797130f4520SKenneth D. Merry /* BF VOLUME SET (OUT) */
798130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
799130f4520SKenneth D. Merry 
800130f4520SKenneth D. Merry /* C0 - ISC_SEND_MSG_SHORT */
801130f4520SKenneth D. Merry //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
802130f4520SKenneth D. Merry {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE,
803130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
804130f4520SKenneth D. Merry 
805130f4520SKenneth D. Merry /* C1 - ISC_SEND_MSG */
806130f4520SKenneth D. Merry //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
807130f4520SKenneth D. Merry {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
808130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
809130f4520SKenneth D. Merry 
810130f4520SKenneth D. Merry /* C2 - ISC_WRITE */
811130f4520SKenneth D. Merry //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
812130f4520SKenneth D. Merry {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
813130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
814130f4520SKenneth D. Merry 
815130f4520SKenneth D. Merry /* C3 - ISC_READ */
816130f4520SKenneth D. Merry //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
817130f4520SKenneth D. Merry {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN,
818130f4520SKenneth D. Merry  CTL_LUN_PAT_NONE},
819130f4520SKenneth D. Merry 
820130f4520SKenneth D. Merry /* C4 */
821130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
822130f4520SKenneth D. Merry 
823130f4520SKenneth D. Merry /* C5 */
824130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
825130f4520SKenneth D. Merry 
826130f4520SKenneth D. Merry /* C6 */
827130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
828130f4520SKenneth D. Merry 
829130f4520SKenneth D. Merry /* C7 */
830130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
831130f4520SKenneth D. Merry 
832130f4520SKenneth D. Merry /* C8 */
833130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
834130f4520SKenneth D. Merry 
835130f4520SKenneth D. Merry /* C9 */
836130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
837130f4520SKenneth D. Merry 
838130f4520SKenneth D. Merry /* CA */
839130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
840130f4520SKenneth D. Merry 
841130f4520SKenneth D. Merry /* CB */
842130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
843130f4520SKenneth D. Merry 
844130f4520SKenneth D. Merry /* CC */
845130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
846130f4520SKenneth D. Merry 
847130f4520SKenneth D. Merry /* CD */
848130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
849130f4520SKenneth D. Merry 
850130f4520SKenneth D. Merry /* CE */
851130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
852130f4520SKenneth D. Merry 
853130f4520SKenneth D. Merry /* CF */
854130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
855130f4520SKenneth D. Merry 
856130f4520SKenneth D. Merry /* D0 */
857130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
858130f4520SKenneth D. Merry 
859130f4520SKenneth D. Merry /* D1 */
860130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
861130f4520SKenneth D. Merry 
862130f4520SKenneth D. Merry /* D2 */
863130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
864130f4520SKenneth D. Merry 
865130f4520SKenneth D. Merry /* D3 */
866130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
867130f4520SKenneth D. Merry 
868130f4520SKenneth D. Merry /* D4 */
869130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
870130f4520SKenneth D. Merry 
871130f4520SKenneth D. Merry /* D5 */
872130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
873130f4520SKenneth D. Merry 
874130f4520SKenneth D. Merry /* D6 */
875130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
876130f4520SKenneth D. Merry 
877130f4520SKenneth D. Merry /* D7 */
878130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
879130f4520SKenneth D. Merry 
880130f4520SKenneth D. Merry /* D8 */
881130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
882130f4520SKenneth D. Merry 
883130f4520SKenneth D. Merry /* D9 */
884130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
885130f4520SKenneth D. Merry 
886130f4520SKenneth D. Merry /* DA */
887130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
888130f4520SKenneth D. Merry 
889130f4520SKenneth D. Merry /* DB */
890130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
891130f4520SKenneth D. Merry 
892130f4520SKenneth D. Merry /* DC */
893130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
894130f4520SKenneth D. Merry 
895130f4520SKenneth D. Merry /* DD */
896130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
897130f4520SKenneth D. Merry 
898130f4520SKenneth D. Merry /* DE */
899130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
900130f4520SKenneth D. Merry 
901130f4520SKenneth D. Merry /* DF */
902130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
903130f4520SKenneth D. Merry 
904130f4520SKenneth D. Merry /* E0 */
905130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
906130f4520SKenneth D. Merry 
907130f4520SKenneth D. Merry /* E1 */
908130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
909130f4520SKenneth D. Merry 
910130f4520SKenneth D. Merry /* E2 */
911130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
912130f4520SKenneth D. Merry 
913130f4520SKenneth D. Merry /* E3 */
914130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
915130f4520SKenneth D. Merry 
916130f4520SKenneth D. Merry /* E4 */
917130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
918130f4520SKenneth D. Merry 
919130f4520SKenneth D. Merry /* E5 */
920130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
921130f4520SKenneth D. Merry 
922130f4520SKenneth D. Merry /* E6 */
923130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
924130f4520SKenneth D. Merry 
925130f4520SKenneth D. Merry /* E7 */
926130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
927130f4520SKenneth D. Merry 
928130f4520SKenneth D. Merry /* E8 */
929130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
930130f4520SKenneth D. Merry 
931130f4520SKenneth D. Merry /* E9 */
932130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
933130f4520SKenneth D. Merry 
934130f4520SKenneth D. Merry /* EA */
935130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
936130f4520SKenneth D. Merry 
937130f4520SKenneth D. Merry /* EB */
938130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
939130f4520SKenneth D. Merry 
940130f4520SKenneth D. Merry /* EC */
941130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
942130f4520SKenneth D. Merry 
943130f4520SKenneth D. Merry /* ED */
944130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
945130f4520SKenneth D. Merry 
946130f4520SKenneth D. Merry /* EE */
947130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
948130f4520SKenneth D. Merry 
949130f4520SKenneth D. Merry /* EF */
950130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
951130f4520SKenneth D. Merry 
952130f4520SKenneth D. Merry /* F0 */
953130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
954130f4520SKenneth D. Merry 
955130f4520SKenneth D. Merry /* F1 */
956130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
957130f4520SKenneth D. Merry 
958130f4520SKenneth D. Merry /* F2 */
959130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
960130f4520SKenneth D. Merry 
961130f4520SKenneth D. Merry /* F3 */
962130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
963130f4520SKenneth D. Merry 
964130f4520SKenneth D. Merry /* F4 */
965130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
966130f4520SKenneth D. Merry 
967130f4520SKenneth D. Merry /* F5 */
968130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
969130f4520SKenneth D. Merry 
970130f4520SKenneth D. Merry /* F6 */
971130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
972130f4520SKenneth D. Merry 
973130f4520SKenneth D. Merry /* F7 */
974130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
975130f4520SKenneth D. Merry 
976130f4520SKenneth D. Merry /* F8 */
977130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
978130f4520SKenneth D. Merry 
979130f4520SKenneth D. Merry /* F9 */
980130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
981130f4520SKenneth D. Merry 
982130f4520SKenneth D. Merry /* FA */
983130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
984130f4520SKenneth D. Merry 
985130f4520SKenneth D. Merry /* FB */
986130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
987130f4520SKenneth D. Merry 
988130f4520SKenneth D. Merry /* FC */
989130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
990130f4520SKenneth D. Merry 
991130f4520SKenneth D. Merry /* FD */
992130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
993130f4520SKenneth D. Merry 
994130f4520SKenneth D. Merry /* FE */
995130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
996130f4520SKenneth D. Merry 
997130f4520SKenneth D. Merry /* FF */
998130f4520SKenneth D. Merry {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
999130f4520SKenneth D. Merry 
1000130f4520SKenneth D. Merry };
1001