ctl_cmd_table.c revision 229997
1/*-
2 * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions, and the following disclaimer,
10 *    without modification.
11 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12 *    substantially similar to the "NO WARRANTY" disclaimer below
13 *    ("Disclaimer") and any redistribution must be conditioned upon
14 *    including a substantially similar Disclaimer requirement for further
15 *    binary redistribution.
16 *
17 * NO WARRANTY
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
27 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGES.
29 *
30 * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $
31 * $FreeBSD: head/sys/cam/ctl/ctl_cmd_table.c 229997 2012-01-12 00:34:33Z ken $
32 */
33/*
34 * CAM Target Layer command table.
35 *
36 * Author: Ken Merry <ken@FreeBSD.org>, Kim Le
37 */
38
39#include <sys/cdefs.h>
40#include <sys/param.h>
41#include <sys/systm.h>
42#include <sys/kernel.h>
43#include <sys/types.h>
44#include <sys/malloc.h>
45#include <sys/condvar.h>
46#include <sys/queue.h>
47
48#include <cam/scsi/scsi_all.h>
49#include <cam/scsi/scsi_da.h>
50#include <cam/ctl/ctl_io.h>
51#include <cam/ctl/ctl.h>
52#include <cam/ctl/ctl_frontend.h>
53#include <cam/ctl/ctl_backend.h>
54#include <cam/ctl/ctl_frontend_internal.h>
55#include <cam/ctl/ctl_ioctl.h>
56#include <cam/ctl/ctl_ha.h>
57#include <cam/ctl/ctl_private.h>
58
59/*
60 * Whenever support for a new command is added, it should be added to this
61 * table.
62 */
63struct ctl_cmd_entry ctl_cmd_table[] =
64{
65/* 00 TEST UNIT READY */
66{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
67			  CTL_FLAG_DATA_NONE |
68			  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
69 CTL_LUN_PAT_TUR},
70
71/* 01 REWIND */
72{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
73
74/* 02 */
75{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
76
77/* 03 REQUEST SENSE */
78{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
79				       CTL_CMD_FLAG_OK_ON_ALL_LUNS |
80				       CTL_CMD_FLAG_ALLOW_ON_RESV |
81				       CTL_CMD_FLAG_NO_SENSE |
82				       CTL_CMD_FLAG_OK_ON_STOPPED |
83				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
84				       CTL_CMD_FLAG_OK_ON_OFFLINE |
85				       CTL_CMD_FLAG_OK_ON_SECONDARY |
86				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
87 CTL_LUN_PAT_NONE},
88
89/* 04 FORMAT UNIT */
90{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN |
91				CTL_CMD_FLAG_OK_ON_INOPERABLE |
92				CTL_FLAG_DATA_OUT,
93 CTL_LUN_PAT_NONE},
94
95/* 05 READ BLOCK LIMITS */
96{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
97
98/* 06 */
99{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
100
101/* 07 REASSIGN BLOCKS */
102{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
103
104/* 08 READ(6) */
105{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
106				  CTL_FLAG_DATA_IN |
107				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
108 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
109
110/* 09 */
111{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
112
113/* 0A WRITE(6) */
114{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
115				   CTL_FLAG_DATA_OUT,
116 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
117
118/* 0B SEEK(6) */
119{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
120
121/* 0C */
122{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
123
124/* 0D */
125{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
126
127/* 0E */
128{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
129
130/* 0F READ REVERSE(6) */
131{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
132
133/* 10 WRITE FILEMARKS(6) */
134{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
135
136/* 11 SPACE(6) */
137{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
138
139/* 12 INQUIRY */
140{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
141			      CTL_CMD_FLAG_ALLOW_ON_RESV |
142			      CTL_CMD_FLAG_NO_SENSE |
143			      CTL_CMD_FLAG_OK_ON_STOPPED |
144			      CTL_CMD_FLAG_OK_ON_INOPERABLE |
145			      CTL_CMD_FLAG_OK_ON_OFFLINE |
146			      CTL_CMD_FLAG_OK_ON_SECONDARY |
147			      CTL_FLAG_DATA_IN |
148			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
149 CTL_LUN_PAT_NONE},
150
151/* 13 */
152{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
153
154/* 14 RECOVER BUFFERED DATA */
155{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
156
157/* 15 MODE SELECT(6) */
158{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
159				     CTL_CMD_FLAG_OK_ON_STOPPED |
160				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
161				     CTL_CMD_FLAG_OK_ON_SECONDARY |
162				     CTL_FLAG_DATA_OUT,
163 CTL_LUN_PAT_NONE},
164
165/* 16 RESERVE(6) */
166{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV |
167				    CTL_CMD_FLAG_OK_ON_BOTH |
168				    CTL_CMD_FLAG_OK_ON_STOPPED |
169				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
170				    CTL_CMD_FLAG_OK_ON_SECONDARY |
171				    CTL_FLAG_DATA_OUT,
172 CTL_LUN_PAT_NONE},
173
174/* 17 RELEASE(6) */
175{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV |
176				   CTL_CMD_FLAG_OK_ON_BOTH |
177				   CTL_CMD_FLAG_OK_ON_STOPPED |
178				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
179				   CTL_CMD_FLAG_OK_ON_SECONDARY |
180				   CTL_FLAG_DATA_NONE,
181 CTL_LUN_PAT_NONE},
182
183/* 18 COPY */
184{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
185
186/* 19 ERASE(6) */
187{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
188
189/* 1A MODE SENSE(6) */
190{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
191				    CTL_CMD_FLAG_OK_ON_STOPPED |
192				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
193				    CTL_CMD_FLAG_OK_ON_SECONDARY |
194				    CTL_FLAG_DATA_IN,
195 CTL_LUN_PAT_NONE},
196
197/* 1B START STOP UNIT */
198{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
199				   CTL_CMD_FLAG_OK_ON_STOPPED |
200				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
201				   CTL_CMD_FLAG_OK_ON_OFFLINE |
202				   CTL_FLAG_DATA_NONE |
203				   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
204 CTL_LUN_PAT_NONE},
205
206/* 1C RECEIVE DIAGNOSTIC RESULTS */
207{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
208
209/* 1D SEND DIAGNOSTIC */
210{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
211
212/* 1E PREVENT ALLOW MEDIUM REMOVAL */
213{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
214
215/* 1F */
216{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
217
218/* 20 */
219{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
220
221/* 21 */
222{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
223
224/* 22 */
225{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
226
227/* 23 */
228{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
229
230/* 24 SET WINDOW */
231{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
232
233/* 25 READ CAPACITY(10) */
234{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN|
235				       CTL_CMD_FLAG_OK_ON_STOPPED |
236				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
237				       CTL_CMD_FLAG_OK_ON_SECONDARY |
238				       CTL_FLAG_DATA_IN |
239				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
240 CTL_LUN_PAT_READCAP},
241
242/* 26 */
243{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
244
245/* 27 */
246{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
247
248/* 28 READ(10) */
249{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
250				  CTL_FLAG_DATA_IN |
251				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
252 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
253
254/* 29 READ GENERATION */
255{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
256
257/* 2A WRITE(10) */
258{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
259 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
260
261/* 2B SEEK(10) */
262{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
263
264/* 2C ERASE(10) */
265{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
266
267/* 2D READ UPDATED BLOCK */
268{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
269
270/* 2E WRITE AND VERIFY(10) */
271{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
272 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
273
274/* 2F VERIFY(10) */
275{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
276
277/* 30 SEARCH DATA HIGH(10) */
278{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
279
280/* 31 SEARCH DATA EQUAL(10) */
281{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
282
283/* 32 SEARCH DATA LOW(10) */
284{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
285
286/* 33 SET LIMITS(10) */
287{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
288
289/* 34 PRE-FETCH(10) */
290{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
291
292/* 35 SYNCHRONIZE CACHE(10) */
293{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
294				   CTL_FLAG_DATA_NONE,
295 CTL_LUN_PAT_NONE},
296
297/* 36 LOCK UNLOCK CACHE(10) */
298{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
299
300/* 37 READ DEFECT DATA(10) */
301{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
302
303/* 38 MEDIUM SCAN */
304{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
305
306/* 39 COMPARE */
307{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
308
309/* 3A COPY AND VERIFY */
310{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
311
312/* 3B WRITE BUFFER */
313{ctl_write_buffer, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_PROC |
314				     CTL_FLAG_DATA_OUT,
315 CTL_LUN_PAT_NONE},
316
317/* 3C READ BUFFER */
318{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
319
320/* 3D UPDATE BLOCK */
321{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
322
323/* 3E READ LONG */
324{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
325
326/* 3F WRITE LONG */
327{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
328
329/* 40 CHANGE DEFINITION */
330{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
331
332/* 41 WRITE SAME(10) */
333{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
334
335/* 42 READ SUB-CHANNEL */
336{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
337
338/* 43 READ TOC/PMA/ATIP */
339{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
340
341/* 44 REPORT DENSITY SUPPORT */
342{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
343
344/* 45 PLAY AUDIO(10) */
345{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
346
347/* 46 GET CONFIGURATION */
348{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
349
350/* 47 PLAY AUDIO MSF */
351{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
352
353/* 48 PLAY AUDIO TRACK INDEX */
354{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
355
356/* 49 PLAY TRACK RELATIVE(10) */
357{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
358
359/* 4A GET EVENT STATUS NOTIFICATION */
360{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
361
362/* 4B PAUSE/RESUME */
363{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
364
365/* 4C LOG SELECT */
366{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
367
368/* 4D LOG SENSE */
369{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
370
371/* 4E STOP PLAY/SCAN */
372{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
373
374/* 4F */
375{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
376
377/* 50 XDWRITE(10) */
378{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
379
380/* 51 XPWRITE(10) */
381{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
382
383/* 52 XDREAD(10) */
384{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
385
386/* 53 RESERVE TRACK */
387{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
388
389/* 54 SEND OPC INFORMATION */
390{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
391
392/* 55 MODE SELECT(10) */
393{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
394				     CTL_CMD_FLAG_OK_ON_STOPPED |
395				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
396				     CTL_CMD_FLAG_OK_ON_SECONDARY |
397				     CTL_FLAG_DATA_OUT,
398 CTL_LUN_PAT_NONE},
399
400/* 56 RESERVE(10) */
401{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV |
402				    CTL_CMD_FLAG_OK_ON_BOTH |
403				    CTL_CMD_FLAG_OK_ON_STOPPED |
404				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
405				    CTL_CMD_FLAG_OK_ON_SECONDARY |
406				    CTL_FLAG_DATA_OUT,
407 CTL_LUN_PAT_NONE},
408
409/* 57 RELEASE(10) */
410{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV |
411				   CTL_CMD_FLAG_OK_ON_BOTH |
412				   CTL_CMD_FLAG_OK_ON_STOPPED |
413				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
414				   CTL_CMD_FLAG_OK_ON_SECONDARY |
415				   CTL_FLAG_DATA_OUT,
416 CTL_LUN_PAT_NONE},
417
418/* 58 REPAIR TRACK */
419{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
420
421/* 59 READ MASTER CUE */
422{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
423
424/* 5A MODE SENSE(10) */
425{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
426				    CTL_CMD_FLAG_OK_ON_STOPPED |
427				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
428				    CTL_CMD_FLAG_OK_ON_SECONDARY |
429				    CTL_FLAG_DATA_IN,
430 CTL_LUN_PAT_NONE},
431
432/* 5B CLOSE TRACK/SESSION */
433{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
434
435/* 5C READ BUFFER CAPACITY */
436{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
437
438/* 5D SEND CUE SHEET */
439{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
440
441/* 5E PERSISTENT RESERVE IN */
442{ctl_persistent_reserve_in, CTL_SERIDX_PRES_IN, CTL_CMD_FLAG_ALLOW_ON_RESV |
443						CTL_CMD_FLAG_OK_ON_BOTH |
444						CTL_CMD_FLAG_OK_ON_STOPPED |
445						CTL_CMD_FLAG_OK_ON_INOPERABLE |
446						CTL_CMD_FLAG_OK_ON_SECONDARY |
447						CTL_FLAG_DATA_IN |
448						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
449 CTL_LUN_PAT_NONE},
450
451//{ctl_persistent_reserve_in, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
452
453/* 5F PERSISTENT RESERVE OUT */
454{ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV |
455						  CTL_CMD_FLAG_OK_ON_BOTH |
456						  CTL_CMD_FLAG_OK_ON_STOPPED |
457						  CTL_CMD_FLAG_OK_ON_INOPERABLE|
458						  CTL_CMD_FLAG_OK_ON_SECONDARY |
459						  CTL_FLAG_DATA_OUT |
460						  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
461 CTL_LUN_PAT_NONE},
462
463//{ctl_persistent_reserve_out, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
464
465/* 60 */
466{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
467
468/* 61 */
469{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
470
471/* 62 */
472{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
473
474/* 63 */
475{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
476
477/* 64 */
478{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
479
480/* 65 */
481{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
482
483/* 66 */
484{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
485
486/* 67 */
487{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
488
489/* 68 */
490{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
491
492/* 69 */
493{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
494
495/* 6A */
496{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
497
498/* 6B */
499{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
500
501/* 6C */
502{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
503
504/* 6D */
505{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
506
507/* 6E */
508{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
509
510/* 6F */
511{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
512
513/* 70 */
514{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
515
516/* 71 */
517{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
518
519/* 72 */
520{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
521
522/* 73 */
523{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
524
525/* 74 */
526{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
527
528/* 75 */
529{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
530
531/* 76 */
532{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
533
534/* 77 */
535{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
536
537/* 78 */
538{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
539
540/* 79 */
541{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
542
543/* 7A */
544{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
545
546/* 7B */
547{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
548
549/* 7C */
550{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
551
552/* 7D */
553{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
554
555/* 7E */
556{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
557
558/* 7F */
559{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
560
561/* 80 XDWRITE EXTENDED(16) */
562{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
563
564/* 81 REBUILD(16) */
565{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
566
567/* 82 REGENERATE(16) */
568{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
569
570/* 83 EXTENDED COPY */
571{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
572
573/* 84 RECEIVE COPY RESULTS */
574{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
575
576/* 85 */
577{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
578
579/* 86 ACCESS CONTROL IN */
580{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
581
582/* 87 ACCESS CONTROL OUT */
583{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
584
585/* 88 READ(16) */
586{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
587                                  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
588 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
589
590/* 89 */
591{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
592
593/* 8A WRITE(16) */
594{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
595 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
596
597/* 8B */
598{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
599
600/* 8C READ ATTRIBUTE */
601{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
602
603/* 8D WRITE ATTRIBUTE */
604{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
605
606/* 8E WRITE AND VERIFY(16) */
607{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
608 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
609
610/* 8F VERIFY(16) */
611{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
612
613/* 90 PRE-FETCH(16) */
614{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
615
616/* 91 SYNCHRONIZE CACHE(16) */
617{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
618				   CTL_FLAG_DATA_NONE,
619 CTL_LUN_PAT_NONE},
620
621/* 92 LOCK UNLOCK CACHE(16) */
622{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
623
624/* 93 WRITE SAME(16) */
625{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
626
627/* 94 */
628{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
629
630/* 95 */
631{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
632
633/* 96 */
634{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
635
636/* 97 */
637{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
638
639/* 98 */
640{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
641
642/* 99 */
643{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
644
645/* 9A */
646{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
647
648/* 9B */
649{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
650
651/* 9C */
652{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
653
654/* 9D */
655{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
656
657/* 9E SERVICE ACTION IN(16) */
658/* XXX KDM not all service actions will be read capacity!! */
659{ctl_service_action_in, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
660					   CTL_CMD_FLAG_OK_ON_STOPPED |
661					   CTL_CMD_FLAG_OK_ON_INOPERABLE |
662					   CTL_CMD_FLAG_OK_ON_SECONDARY |
663					   CTL_FLAG_DATA_IN |
664					   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
665 CTL_LUN_PAT_READCAP},
666
667/* 9F SERVICE ACTION OUT(16) */
668{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
669
670/* A0 REPORT LUNS */
671{ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
672				  CTL_CMD_FLAG_ALLOW_ON_RESV |
673				  CTL_CMD_FLAG_NO_SENSE |
674				  CTL_CMD_FLAG_OK_ON_STOPPED |
675				  CTL_CMD_FLAG_OK_ON_INOPERABLE |
676				  CTL_CMD_FLAG_OK_ON_OFFLINE |
677				  CTL_CMD_FLAG_OK_ON_SECONDARY |
678				  CTL_FLAG_DATA_IN |
679				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
680 CTL_LUN_PAT_NONE},
681
682/* A1 BLANK */
683{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
684
685/* A2 SEND EVENT */
686{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
687
688/* A3 MAINTENANCE (IN) Service Action - (0A) REPORT TARGET PORT GROUP */
689{ctl_maintenance_in, CTL_SERIDX_MAIN_IN, CTL_CMD_FLAG_OK_ON_BOTH |
690				         CTL_CMD_FLAG_OK_ON_STOPPED |
691				         CTL_CMD_FLAG_OK_ON_INOPERABLE |
692				         CTL_CMD_FLAG_OK_ON_SECONDARY |
693				         CTL_FLAG_DATA_IN,
694 CTL_LUN_PAT_NONE},
695
696/* A4 MAINTENANCE (OUT) */
697{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
698
699/* A5 MOVE MEDIUM */
700{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
701
702/* A6 EXCHANGE MEDIUM */
703{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
704
705/* A7 MOVE MEDIUM ATTACHED */
706{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
707
708/* A8 READ(12) */
709{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
710                                  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
711 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
712
713/* A9 PLAY TRACK RELATIVE(12) */
714{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
715
716/* AA WRITE(12) */
717{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
718 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
719
720/* AB SERVICE ACTION IN(12) */
721{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
722
723/* AC ERASE(12) */
724{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
725
726/* AD READ DVD STRUCTURE */
727{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
728
729/* AE WRITE AND VERIFY(12) */
730{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
731 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
732
733/* AF VERIFY(12) */
734{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
735
736/* B0 SEARCH DATA HIGH(12) */
737{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
738
739/* B1 SEARCH DATA EQUAL(12) */
740{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
741
742/* B2 SEARCH DATA LOW(12) */
743{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
744
745/* B3 SET LIMITS(12) */
746{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
747
748/* B4 READ ELEMENT STATUS ATTACHED */
749{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
750
751/* B5 REQUEST VOLUME ELEMENT ADDRESS */
752{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
753
754/* B6 SEND VOLUME TAG */
755{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
756
757/* B7 READ DEFECT DATA(12) */
758{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
759
760/* B8 READ ELEMENT STATUS */
761{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
762
763/* B9 READ CD MSF */
764{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
765
766/* BA REDUNDANCY GROUP (IN) */
767{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
768
769/* BB REDUNDANCY GROUP (OUT) */
770{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
771
772/* BC SPARE (IN) */
773{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
774
775/* BD SPARE (OUT) */
776{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
777
778/* BE VOLUME SET (IN) */
779{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
780
781/* BF VOLUME SET (OUT) */
782{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
783
784/* C0 - ISC_SEND_MSG_SHORT */
785//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
786{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE,
787 CTL_LUN_PAT_NONE},
788
789/* C1 - ISC_SEND_MSG */
790//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
791{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
792 CTL_LUN_PAT_NONE},
793
794/* C2 - ISC_WRITE */
795//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
796{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
797 CTL_LUN_PAT_NONE},
798
799/* C3 - ISC_READ */
800//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
801{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN,
802 CTL_LUN_PAT_NONE},
803
804/* C4 */
805{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
806
807/* C5 */
808{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
809
810/* C6 */
811{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
812
813/* C7 */
814{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
815
816/* C8 */
817{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
818
819/* C9 */
820{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
821
822/* CA */
823{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
824
825/* CB */
826{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
827
828/* CC */
829{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
830
831/* CD */
832{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
833
834/* CE */
835{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
836
837/* CF */
838{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
839
840/* D0 */
841{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
842
843/* D1 */
844{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
845
846/* D2 */
847{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
848
849/* D3 */
850{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
851
852/* D4 */
853{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
854
855/* D5 */
856{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
857
858/* D6 */
859{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
860
861/* D7 */
862{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
863
864/* D8 */
865{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
866
867/* D9 */
868{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
869
870/* DA */
871{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
872
873/* DB */
874{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
875
876/* DC */
877{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
878
879/* DD */
880{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
881
882/* DE */
883{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
884
885/* DF */
886{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
887
888/* E0 */
889{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
890
891/* E1 */
892{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
893
894/* E2 */
895{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
896
897/* E3 */
898{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
899
900/* E4 */
901{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
902
903/* E5 */
904{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
905
906/* E6 */
907{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
908
909/* E7 */
910{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
911
912/* E8 */
913{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
914
915/* E9 */
916{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
917
918/* EA */
919{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
920
921/* EB */
922{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
923
924/* EC */
925{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
926
927/* ED */
928{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
929
930/* EE */
931{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
932
933/* EF */
934{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
935
936/* F0 */
937{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
938
939/* F1 */
940{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
941
942/* F2 */
943{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
944
945/* F3 */
946{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
947
948/* F4 */
949{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
950
951/* F5 */
952{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
953
954/* F6 */
955{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
956
957/* F7 */
958{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
959
960/* F8 */
961{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
962
963/* F9 */
964{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
965
966/* FA */
967{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
968
969/* FB */
970{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
971
972/* FC */
973{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
974
975/* FD */
976{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
977
978/* FE */
979{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
980
981/* FF */
982{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
983
984};
985