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