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