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