ctl_cmd_table.c revision 229997
1229997Sken/*-
2229997Sken * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp.
3229997Sken * All rights reserved.
4229997Sken *
5229997Sken * Redistribution and use in source and binary forms, with or without
6229997Sken * modification, are permitted provided that the following conditions
7229997Sken * are met:
8229997Sken * 1. Redistributions of source code must retain the above copyright
9229997Sken *    notice, this list of conditions, and the following disclaimer,
10229997Sken *    without modification.
11229997Sken * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12229997Sken *    substantially similar to the "NO WARRANTY" disclaimer below
13229997Sken *    ("Disclaimer") and any redistribution must be conditioned upon
14229997Sken *    including a substantially similar Disclaimer requirement for further
15229997Sken *    binary redistribution.
16229997Sken *
17229997Sken * NO WARRANTY
18229997Sken * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19229997Sken * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20229997Sken * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
21229997Sken * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22229997Sken * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23229997Sken * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24229997Sken * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25229997Sken * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26229997Sken * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
27229997Sken * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28229997Sken * POSSIBILITY OF SUCH DAMAGES.
29229997Sken *
30229997Sken * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $
31229997Sken * $FreeBSD: head/sys/cam/ctl/ctl_cmd_table.c 229997 2012-01-12 00:34:33Z ken $
32229997Sken */
33229997Sken/*
34229997Sken * CAM Target Layer command table.
35229997Sken *
36229997Sken * Author: Ken Merry <ken@FreeBSD.org>, Kim Le
37229997Sken */
38229997Sken
39229997Sken#include <sys/cdefs.h>
40229997Sken#include <sys/param.h>
41229997Sken#include <sys/systm.h>
42229997Sken#include <sys/kernel.h>
43229997Sken#include <sys/types.h>
44229997Sken#include <sys/malloc.h>
45229997Sken#include <sys/condvar.h>
46229997Sken#include <sys/queue.h>
47233963Sken
48229997Sken#include <cam/scsi/scsi_all.h>
49229997Sken#include <cam/scsi/scsi_da.h>
50229997Sken#include <cam/ctl/ctl_io.h>
51229997Sken#include <cam/ctl/ctl.h>
52229997Sken#include <cam/ctl/ctl_frontend.h>
53229997Sken#include <cam/ctl/ctl_backend.h>
54229997Sken#include <cam/ctl/ctl_frontend_internal.h>
55229997Sken#include <cam/ctl/ctl_ioctl.h>
56229997Sken#include <cam/ctl/ctl_ha.h>
57229997Sken#include <cam/ctl/ctl_private.h>
58229997Sken
59229997Sken/*
60229997Sken * Whenever support for a new command is added, it should be added to this
61229997Sken * table.
62229997Sken */
63229997Skenstruct ctl_cmd_entry ctl_cmd_table[] =
64229997Sken{
65229997Sken/* 00 TEST UNIT READY */
66229997Sken{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
67229997Sken			  CTL_FLAG_DATA_NONE |
68229997Sken			  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
69229997Sken CTL_LUN_PAT_TUR},
70229997Sken
71229997Sken/* 01 REWIND */
72229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
73229997Sken
74229997Sken/* 02 */
75229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
76229997Sken
77229997Sken/* 03 REQUEST SENSE */
78229997Sken{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
79229997Sken				       CTL_CMD_FLAG_OK_ON_ALL_LUNS |
80229997Sken				       CTL_CMD_FLAG_ALLOW_ON_RESV |
81229997Sken				       CTL_CMD_FLAG_NO_SENSE |
82229997Sken				       CTL_CMD_FLAG_OK_ON_STOPPED |
83229997Sken				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
84229997Sken				       CTL_CMD_FLAG_OK_ON_OFFLINE |
85229997Sken				       CTL_CMD_FLAG_OK_ON_SECONDARY |
86229997Sken				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
87229997Sken CTL_LUN_PAT_NONE},
88229997Sken
89229997Sken/* 04 FORMAT UNIT */
90229997Sken{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN |
91229997Sken				CTL_CMD_FLAG_OK_ON_INOPERABLE |
92229997Sken				CTL_FLAG_DATA_OUT,
93229997Sken CTL_LUN_PAT_NONE},
94229997Sken
95229997Sken/* 05 READ BLOCK LIMITS */
96229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
97229997Sken
98229997Sken/* 06 */
99229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
100229997Sken
101229997Sken/* 07 REASSIGN BLOCKS */
102229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
103229997Sken
104229997Sken/* 08 READ(6) */
105229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
106229997Sken				  CTL_FLAG_DATA_IN |
107229997Sken				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
108229997Sken CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
109229997Sken
110229997Sken/* 09 */
111229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
112229997Sken
113229997Sken/* 0A WRITE(6) */
114229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
115229997Sken				   CTL_FLAG_DATA_OUT,
116229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
117229997Sken
118229997Sken/* 0B SEEK(6) */
119229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
120229997Sken
121229997Sken/* 0C */
122229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
123229997Sken
124229997Sken/* 0D */
125229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
126229997Sken
127229997Sken/* 0E */
128229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
129229997Sken
130229997Sken/* 0F READ REVERSE(6) */
131229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
132229997Sken
133229997Sken/* 10 WRITE FILEMARKS(6) */
134229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
135229997Sken
136229997Sken/* 11 SPACE(6) */
137229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
138229997Sken
139229997Sken/* 12 INQUIRY */
140229997Sken{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
141229997Sken			      CTL_CMD_FLAG_ALLOW_ON_RESV |
142229997Sken			      CTL_CMD_FLAG_NO_SENSE |
143229997Sken			      CTL_CMD_FLAG_OK_ON_STOPPED |
144229997Sken			      CTL_CMD_FLAG_OK_ON_INOPERABLE |
145229997Sken			      CTL_CMD_FLAG_OK_ON_OFFLINE |
146229997Sken			      CTL_CMD_FLAG_OK_ON_SECONDARY |
147229997Sken			      CTL_FLAG_DATA_IN |
148229997Sken			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
149229997Sken CTL_LUN_PAT_NONE},
150229997Sken
151229997Sken/* 13 */
152229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
153229997Sken
154229997Sken/* 14 RECOVER BUFFERED DATA */
155229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
156229997Sken
157229997Sken/* 15 MODE SELECT(6) */
158229997Sken{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
159229997Sken				     CTL_CMD_FLAG_OK_ON_STOPPED |
160229997Sken				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
161229997Sken				     CTL_CMD_FLAG_OK_ON_SECONDARY |
162229997Sken				     CTL_FLAG_DATA_OUT,
163229997Sken CTL_LUN_PAT_NONE},
164229997Sken
165229997Sken/* 16 RESERVE(6) */
166229997Sken{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV |
167229997Sken				    CTL_CMD_FLAG_OK_ON_BOTH |
168229997Sken				    CTL_CMD_FLAG_OK_ON_STOPPED |
169229997Sken				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
170229997Sken				    CTL_CMD_FLAG_OK_ON_SECONDARY |
171229997Sken				    CTL_FLAG_DATA_OUT,
172229997Sken CTL_LUN_PAT_NONE},
173229997Sken
174229997Sken/* 17 RELEASE(6) */
175229997Sken{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV |
176229997Sken				   CTL_CMD_FLAG_OK_ON_BOTH |
177229997Sken				   CTL_CMD_FLAG_OK_ON_STOPPED |
178229997Sken				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
179229997Sken				   CTL_CMD_FLAG_OK_ON_SECONDARY |
180229997Sken				   CTL_FLAG_DATA_NONE,
181229997Sken CTL_LUN_PAT_NONE},
182229997Sken
183229997Sken/* 18 COPY */
184229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
185229997Sken
186229997Sken/* 19 ERASE(6) */
187229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
188229997Sken
189229997Sken/* 1A MODE SENSE(6) */
190229997Sken{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
191229997Sken				    CTL_CMD_FLAG_OK_ON_STOPPED |
192229997Sken				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
193229997Sken				    CTL_CMD_FLAG_OK_ON_SECONDARY |
194229997Sken				    CTL_FLAG_DATA_IN,
195229997Sken CTL_LUN_PAT_NONE},
196229997Sken
197229997Sken/* 1B START STOP UNIT */
198229997Sken{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
199229997Sken				   CTL_CMD_FLAG_OK_ON_STOPPED |
200229997Sken				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
201229997Sken				   CTL_CMD_FLAG_OK_ON_OFFLINE |
202229997Sken				   CTL_FLAG_DATA_NONE |
203229997Sken				   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
204229997Sken CTL_LUN_PAT_NONE},
205229997Sken
206229997Sken/* 1C RECEIVE DIAGNOSTIC RESULTS */
207229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
208229997Sken
209229997Sken/* 1D SEND DIAGNOSTIC */
210229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
211229997Sken
212229997Sken/* 1E PREVENT ALLOW MEDIUM REMOVAL */
213229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
214229997Sken
215229997Sken/* 1F */
216229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
217229997Sken
218229997Sken/* 20 */
219229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
220229997Sken
221229997Sken/* 21 */
222229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
223229997Sken
224229997Sken/* 22 */
225229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
226229997Sken
227229997Sken/* 23 */
228229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
229229997Sken
230229997Sken/* 24 SET WINDOW */
231229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
232229997Sken
233229997Sken/* 25 READ CAPACITY(10) */
234229997Sken{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN|
235229997Sken				       CTL_CMD_FLAG_OK_ON_STOPPED |
236229997Sken				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
237229997Sken				       CTL_CMD_FLAG_OK_ON_SECONDARY |
238229997Sken				       CTL_FLAG_DATA_IN |
239229997Sken				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
240229997Sken CTL_LUN_PAT_READCAP},
241229997Sken
242229997Sken/* 26 */
243229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
244229997Sken
245229997Sken/* 27 */
246229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
247229997Sken
248229997Sken/* 28 READ(10) */
249229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
250229997Sken				  CTL_FLAG_DATA_IN |
251229997Sken				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
252229997Sken CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
253229997Sken
254229997Sken/* 29 READ GENERATION */
255229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
256229997Sken
257229997Sken/* 2A WRITE(10) */
258229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
259229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
260229997Sken
261229997Sken/* 2B SEEK(10) */
262229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
263229997Sken
264229997Sken/* 2C ERASE(10) */
265229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
266229997Sken
267229997Sken/* 2D READ UPDATED BLOCK */
268229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
269229997Sken
270229997Sken/* 2E WRITE AND VERIFY(10) */
271229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
272229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
273229997Sken
274229997Sken/* 2F VERIFY(10) */
275229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
276229997Sken
277229997Sken/* 30 SEARCH DATA HIGH(10) */
278229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
279229997Sken
280229997Sken/* 31 SEARCH DATA EQUAL(10) */
281229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
282229997Sken
283229997Sken/* 32 SEARCH DATA LOW(10) */
284229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
285229997Sken
286229997Sken/* 33 SET LIMITS(10) */
287229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
288229997Sken
289229997Sken/* 34 PRE-FETCH(10) */
290229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
291229997Sken
292229997Sken/* 35 SYNCHRONIZE CACHE(10) */
293229997Sken{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
294229997Sken				   CTL_FLAG_DATA_NONE,
295229997Sken CTL_LUN_PAT_NONE},
296229997Sken
297229997Sken/* 36 LOCK UNLOCK CACHE(10) */
298229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
299229997Sken
300229997Sken/* 37 READ DEFECT DATA(10) */
301229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
302229997Sken
303229997Sken/* 38 MEDIUM SCAN */
304229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
305229997Sken
306229997Sken/* 39 COMPARE */
307229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
308229997Sken
309229997Sken/* 3A COPY AND VERIFY */
310229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
311229997Sken
312229997Sken/* 3B WRITE BUFFER */
313229997Sken{ctl_write_buffer, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_PROC |
314229997Sken				     CTL_FLAG_DATA_OUT,
315229997Sken CTL_LUN_PAT_NONE},
316229997Sken
317229997Sken/* 3C READ BUFFER */
318229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
319229997Sken
320229997Sken/* 3D UPDATE BLOCK */
321229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
322229997Sken
323229997Sken/* 3E READ LONG */
324229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
325229997Sken
326229997Sken/* 3F WRITE LONG */
327229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
328229997Sken
329229997Sken/* 40 CHANGE DEFINITION */
330229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
331229997Sken
332229997Sken/* 41 WRITE SAME(10) */
333229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
334265634Smav
335265634Smav/* 42 READ SUB-CHANNEL */
336265634Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
337229997Sken
338265634Smav/* 43 READ TOC/PMA/ATIP */
339265634Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
340265634Smav
341229997Sken/* 44 REPORT DENSITY SUPPORT */
342229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
343229997Sken
344229997Sken/* 45 PLAY AUDIO(10) */
345229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
346229997Sken
347229997Sken/* 46 GET CONFIGURATION */
348229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
349229997Sken
350229997Sken/* 47 PLAY AUDIO MSF */
351229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
352229997Sken
353229997Sken/* 48 PLAY AUDIO TRACK INDEX */
354229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
355229997Sken
356229997Sken/* 49 PLAY TRACK RELATIVE(10) */
357229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
358229997Sken
359229997Sken/* 4A GET EVENT STATUS NOTIFICATION */
360229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
361229997Sken
362229997Sken/* 4B PAUSE/RESUME */
363229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
364229997Sken
365229997Sken/* 4C LOG SELECT */
366229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
367229997Sken
368229997Sken/* 4D LOG SENSE */
369229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
370229997Sken
371229997Sken/* 4E STOP PLAY/SCAN */
372229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
373229997Sken
374229997Sken/* 4F */
375229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
376229997Sken
377229997Sken/* 50 XDWRITE(10) */
378229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
379229997Sken
380229997Sken/* 51 XPWRITE(10) */
381229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
382229997Sken
383229997Sken/* 52 XDREAD(10) */
384229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
385229997Sken
386229997Sken/* 53 RESERVE TRACK */
387229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
388229997Sken
389229997Sken/* 54 SEND OPC INFORMATION */
390229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
391229997Sken
392229997Sken/* 55 MODE SELECT(10) */
393229997Sken{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
394229997Sken				     CTL_CMD_FLAG_OK_ON_STOPPED |
395229997Sken				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
396229997Sken				     CTL_CMD_FLAG_OK_ON_SECONDARY |
397229997Sken				     CTL_FLAG_DATA_OUT,
398229997Sken CTL_LUN_PAT_NONE},
399229997Sken
400229997Sken/* 56 RESERVE(10) */
401229997Sken{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV |
402229997Sken				    CTL_CMD_FLAG_OK_ON_BOTH |
403229997Sken				    CTL_CMD_FLAG_OK_ON_STOPPED |
404229997Sken				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
405229997Sken				    CTL_CMD_FLAG_OK_ON_SECONDARY |
406229997Sken				    CTL_FLAG_DATA_OUT,
407229997Sken CTL_LUN_PAT_NONE},
408229997Sken
409229997Sken/* 57 RELEASE(10) */
410229997Sken{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV |
411229997Sken				   CTL_CMD_FLAG_OK_ON_BOTH |
412229997Sken				   CTL_CMD_FLAG_OK_ON_STOPPED |
413229997Sken				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
414229997Sken				   CTL_CMD_FLAG_OK_ON_SECONDARY |
415229997Sken				   CTL_FLAG_DATA_OUT,
416229997Sken CTL_LUN_PAT_NONE},
417229997Sken
418229997Sken/* 58 REPAIR TRACK */
419229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
420229997Sken
421229997Sken/* 59 READ MASTER CUE */
422229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
423229997Sken
424229997Sken/* 5A MODE SENSE(10) */
425229997Sken{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
426229997Sken				    CTL_CMD_FLAG_OK_ON_STOPPED |
427229997Sken				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
428229997Sken				    CTL_CMD_FLAG_OK_ON_SECONDARY |
429229997Sken				    CTL_FLAG_DATA_IN,
430229997Sken CTL_LUN_PAT_NONE},
431229997Sken
432229997Sken/* 5B CLOSE TRACK/SESSION */
433229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
434229997Sken
435229997Sken/* 5C READ BUFFER CAPACITY */
436229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
437229997Sken
438229997Sken/* 5D SEND CUE SHEET */
439229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
440229997Sken
441229997Sken/* 5E PERSISTENT RESERVE IN */
442229997Sken{ctl_persistent_reserve_in, CTL_SERIDX_PRES_IN, CTL_CMD_FLAG_ALLOW_ON_RESV |
443229997Sken						CTL_CMD_FLAG_OK_ON_BOTH |
444229997Sken						CTL_CMD_FLAG_OK_ON_STOPPED |
445229997Sken						CTL_CMD_FLAG_OK_ON_INOPERABLE |
446229997Sken						CTL_CMD_FLAG_OK_ON_SECONDARY |
447229997Sken						CTL_FLAG_DATA_IN |
448229997Sken						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
449229997Sken CTL_LUN_PAT_NONE},
450229997Sken
451229997Sken//{ctl_persistent_reserve_in, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
452229997Sken
453229997Sken/* 5F PERSISTENT RESERVE OUT */
454229997Sken{ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV |
455229997Sken						  CTL_CMD_FLAG_OK_ON_BOTH |
456229997Sken						  CTL_CMD_FLAG_OK_ON_STOPPED |
457229997Sken						  CTL_CMD_FLAG_OK_ON_INOPERABLE|
458229997Sken						  CTL_CMD_FLAG_OK_ON_SECONDARY |
459229997Sken						  CTL_FLAG_DATA_OUT |
460229997Sken						  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
461229997Sken CTL_LUN_PAT_NONE},
462229997Sken
463229997Sken//{ctl_persistent_reserve_out, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
464229997Sken
465229997Sken/* 60 */
466229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
467229997Sken
468229997Sken/* 61 */
469229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
470229997Sken
471229997Sken/* 62 */
472229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
473229997Sken
474229997Sken/* 63 */
475229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
476229997Sken
477229997Sken/* 64 */
478229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
479229997Sken
480229997Sken/* 65 */
481229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
482229997Sken
483229997Sken/* 66 */
484229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
485229997Sken
486229997Sken/* 67 */
487229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
488229997Sken
489229997Sken/* 68 */
490229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
491229997Sken
492229997Sken/* 69 */
493229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
494229997Sken
495229997Sken/* 6A */
496229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
497229997Sken
498229997Sken/* 6B */
499229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
500229997Sken
501229997Sken/* 6C */
502229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
503229997Sken
504229997Sken/* 6D */
505229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
506229997Sken
507229997Sken/* 6E */
508229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
509229997Sken
510229997Sken/* 6F */
511229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
512229997Sken
513229997Sken/* 70 */
514229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
515229997Sken
516229997Sken/* 71 */
517229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
518229997Sken
519229997Sken/* 72 */
520229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
521229997Sken
522229997Sken/* 73 */
523229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
524229997Sken
525229997Sken/* 74 */
526229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
527229997Sken
528229997Sken/* 75 */
529229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
530229997Sken
531229997Sken/* 76 */
532229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
533229997Sken
534229997Sken/* 77 */
535229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
536229997Sken
537229997Sken/* 78 */
538229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
539229997Sken
540229997Sken/* 79 */
541229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
542229997Sken
543229997Sken/* 7A */
544229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
545229997Sken
546229997Sken/* 7B */
547229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
548229997Sken
549229997Sken/* 7C */
550229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
551229997Sken
552229997Sken/* 7D */
553229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
554229997Sken
555229997Sken/* 7E */
556229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
557229997Sken
558229997Sken/* 7F */
559229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
560229997Sken
561229997Sken/* 80 XDWRITE EXTENDED(16) */
562229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
563229997Sken
564229997Sken/* 81 REBUILD(16) */
565229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
566229997Sken
567229997Sken/* 82 REGENERATE(16) */
568229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
569229997Sken
570229997Sken/* 83 EXTENDED COPY */
571229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
572229997Sken
573229997Sken/* 84 RECEIVE COPY RESULTS */
574229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
575229997Sken
576229997Sken/* 85 */
577229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
578229997Sken
579229997Sken/* 86 ACCESS CONTROL IN */
580229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
581229997Sken
582229997Sken/* 87 ACCESS CONTROL OUT */
583229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
584229997Sken
585229997Sken/* 88 READ(16) */
586229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
587229997Sken                                  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
588229997Sken CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
589229997Sken
590229997Sken/* 89 */
591229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
592229997Sken
593229997Sken/* 8A WRITE(16) */
594229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
595229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
596229997Sken
597229997Sken/* 8B */
598229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
599229997Sken
600229997Sken/* 8C READ ATTRIBUTE */
601229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
602229997Sken
603229997Sken/* 8D WRITE ATTRIBUTE */
604229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
605229997Sken
606229997Sken/* 8E WRITE AND VERIFY(16) */
607229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
608229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
609229997Sken
610229997Sken/* 8F VERIFY(16) */
611229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
612229997Sken
613229997Sken/* 90 PRE-FETCH(16) */
614229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
615229997Sken
616229997Sken/* 91 SYNCHRONIZE CACHE(16) */
617229997Sken{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
618229997Sken				   CTL_FLAG_DATA_NONE,
619229997Sken CTL_LUN_PAT_NONE},
620229997Sken
621229997Sken/* 92 LOCK UNLOCK CACHE(16) */
622229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
623229997Sken
624229997Sken/* 93 WRITE SAME(16) */
625229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
626229997Sken
627229997Sken/* 94 */
628229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
629265634Smav
630265634Smav/* 95 */
631265634Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
632229997Sken
633229997Sken/* 96 */
634229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
635229997Sken
636229997Sken/* 97 */
637229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
638229997Sken
639229997Sken/* 98 */
640229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
641229997Sken
642229997Sken/* 99 */
643229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
644229997Sken
645229997Sken/* 9A */
646229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
647229997Sken
648229997Sken/* 9B */
649229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
650229997Sken
651229997Sken/* 9C */
652229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
653229997Sken
654229997Sken/* 9D */
655229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
656229997Sken
657229997Sken/* 9E SERVICE ACTION IN(16) */
658229997Sken/* XXX KDM not all service actions will be read capacity!! */
659229997Sken{ctl_service_action_in, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
660229997Sken					   CTL_CMD_FLAG_OK_ON_STOPPED |
661229997Sken					   CTL_CMD_FLAG_OK_ON_INOPERABLE |
662229997Sken					   CTL_CMD_FLAG_OK_ON_SECONDARY |
663229997Sken					   CTL_FLAG_DATA_IN |
664229997Sken					   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
665229997Sken CTL_LUN_PAT_READCAP},
666229997Sken
667229997Sken/* 9F SERVICE ACTION OUT(16) */
668229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
669229997Sken
670229997Sken/* A0 REPORT LUNS */
671229997Sken{ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
672229997Sken				  CTL_CMD_FLAG_ALLOW_ON_RESV |
673229997Sken				  CTL_CMD_FLAG_NO_SENSE |
674229997Sken				  CTL_CMD_FLAG_OK_ON_STOPPED |
675229997Sken				  CTL_CMD_FLAG_OK_ON_INOPERABLE |
676229997Sken				  CTL_CMD_FLAG_OK_ON_OFFLINE |
677229997Sken				  CTL_CMD_FLAG_OK_ON_SECONDARY |
678229997Sken				  CTL_FLAG_DATA_IN |
679229997Sken				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
680229997Sken CTL_LUN_PAT_NONE},
681229997Sken
682229997Sken/* A1 BLANK */
683229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
684229997Sken
685229997Sken/* A2 SEND EVENT */
686229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
687229997Sken
688229997Sken/* A3 MAINTENANCE (IN) Service Action - (0A) REPORT TARGET PORT GROUP */
689229997Sken{ctl_maintenance_in, CTL_SERIDX_MAIN_IN, CTL_CMD_FLAG_OK_ON_BOTH |
690229997Sken				         CTL_CMD_FLAG_OK_ON_STOPPED |
691229997Sken				         CTL_CMD_FLAG_OK_ON_INOPERABLE |
692229997Sken				         CTL_CMD_FLAG_OK_ON_SECONDARY |
693229997Sken				         CTL_FLAG_DATA_IN,
694229997Sken CTL_LUN_PAT_NONE},
695229997Sken
696229997Sken/* A4 MAINTENANCE (OUT) */
697229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
698229997Sken
699229997Sken/* A5 MOVE MEDIUM */
700229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
701229997Sken
702229997Sken/* A6 EXCHANGE MEDIUM */
703229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
704229997Sken
705229997Sken/* A7 MOVE MEDIUM ATTACHED */
706229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
707229997Sken
708229997Sken/* A8 READ(12) */
709229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
710229997Sken                                  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
711229997Sken CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE},
712229997Sken
713229997Sken/* A9 PLAY TRACK RELATIVE(12) */
714229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
715229997Sken
716229997Sken/* AA WRITE(12) */
717229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
718229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
719229997Sken
720229997Sken/* AB SERVICE ACTION IN(12) */
721229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
722229997Sken
723229997Sken/* AC ERASE(12) */
724229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
725229997Sken
726229997Sken/* AD READ DVD STRUCTURE */
727229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
728229997Sken
729229997Sken/* AE WRITE AND VERIFY(12) */
730229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
731229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE},
732229997Sken
733229997Sken/* AF VERIFY(12) */
734229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
735229997Sken
736229997Sken/* B0 SEARCH DATA HIGH(12) */
737229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
738229997Sken
739229997Sken/* B1 SEARCH DATA EQUAL(12) */
740229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
741229997Sken
742229997Sken/* B2 SEARCH DATA LOW(12) */
743229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
744229997Sken
745229997Sken/* B3 SET LIMITS(12) */
746229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
747229997Sken
748229997Sken/* B4 READ ELEMENT STATUS ATTACHED */
749229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
750229997Sken
751229997Sken/* B5 REQUEST VOLUME ELEMENT ADDRESS */
752229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
753229997Sken
754229997Sken/* B6 SEND VOLUME TAG */
755229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
756229997Sken
757229997Sken/* B7 READ DEFECT DATA(12) */
758229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
759229997Sken
760229997Sken/* B8 READ ELEMENT STATUS */
761229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
762229997Sken
763229997Sken/* B9 READ CD MSF */
764229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
765229997Sken
766229997Sken/* BA REDUNDANCY GROUP (IN) */
767229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
768229997Sken
769229997Sken/* BB REDUNDANCY GROUP (OUT) */
770229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
771229997Sken
772229997Sken/* BC SPARE (IN) */
773229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
774229997Sken
775229997Sken/* BD SPARE (OUT) */
776229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
777229997Sken
778229997Sken/* BE VOLUME SET (IN) */
779229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
780229997Sken
781229997Sken/* BF VOLUME SET (OUT) */
782229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
783229997Sken
784229997Sken/* C0 - ISC_SEND_MSG_SHORT */
785229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
786229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE,
787229997Sken CTL_LUN_PAT_NONE},
788229997Sken
789229997Sken/* C1 - ISC_SEND_MSG */
790229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
791229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
792229997Sken CTL_LUN_PAT_NONE},
793229997Sken
794229997Sken/* C2 - ISC_WRITE */
795229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
796229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
797229997Sken CTL_LUN_PAT_NONE},
798229997Sken
799229997Sken/* C3 - ISC_READ */
800229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
801229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN,
802229997Sken CTL_LUN_PAT_NONE},
803229997Sken
804229997Sken/* C4 */
805229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
806229997Sken
807229997Sken/* C5 */
808229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
809229997Sken
810229997Sken/* C6 */
811229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
812229997Sken
813229997Sken/* C7 */
814229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
815229997Sken
816229997Sken/* C8 */
817229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
818229997Sken
819229997Sken/* C9 */
820229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
821229997Sken
822229997Sken/* CA */
823229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
824229997Sken
825229997Sken/* CB */
826229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
827229997Sken
828229997Sken/* CC */
829229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
830229997Sken
831229997Sken/* CD */
832229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
833229997Sken
834229997Sken/* CE */
835229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
836229997Sken
837229997Sken/* CF */
838229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
839229997Sken
840229997Sken/* D0 */
841229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
842229997Sken
843229997Sken/* D1 */
844229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
845229997Sken
846229997Sken/* D2 */
847229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
848229997Sken
849229997Sken/* D3 */
850229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
851229997Sken
852229997Sken/* D4 */
853229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
854229997Sken
855229997Sken/* D5 */
856229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
857229997Sken
858229997Sken/* D6 */
859229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
860229997Sken
861229997Sken/* D7 */
862229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
863229997Sken
864229997Sken/* D8 */
865229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
866229997Sken
867229997Sken/* D9 */
868229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
869229997Sken
870229997Sken/* DA */
871229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
872229997Sken
873229997Sken/* DB */
874229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
875229997Sken
876229997Sken/* DC */
877229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
878229997Sken
879229997Sken/* DD */
880229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
881229997Sken
882229997Sken/* DE */
883229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
884229997Sken
885229997Sken/* DF */
886229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
887229997Sken
888229997Sken/* E0 */
889229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
890229997Sken
891229997Sken/* E1 */
892229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
893229997Sken
894229997Sken/* E2 */
895229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
896229997Sken
897229997Sken/* E3 */
898229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
899229997Sken
900229997Sken/* E4 */
901229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
902229997Sken
903229997Sken/* E5 */
904229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
905229997Sken
906229997Sken/* E6 */
907229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
908229997Sken
909229997Sken/* E7 */
910229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
911229997Sken
912229997Sken/* E8 */
913229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
914229997Sken
915229997Sken/* E9 */
916229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
917229997Sken
918229997Sken/* EA */
919229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
920229997Sken
921229997Sken/* EB */
922229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
923229997Sken
924229997Sken/* EC */
925229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
926229997Sken
927229997Sken/* ED */
928229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
929229997Sken
930229997Sken/* EE */
931229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
932229997Sken
933229997Sken/* EF */
934229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
935229997Sken
936229997Sken/* F0 */
937229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
938229997Sken
939229997Sken/* F1 */
940229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
941229997Sken
942229997Sken/* F2 */
943229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
944229997Sken
945229997Sken/* F3 */
946229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
947229997Sken
948229997Sken/* F4 */
949229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
950229997Sken
951229997Sken/* F5 */
952229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
953229997Sken
954229997Sken/* F6 */
955229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
956229997Sken
957229997Sken/* F7 */
958229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
959229997Sken
960229997Sken/* F8 */
961229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
962229997Sken
963229997Sken/* F9 */
964229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
965229997Sken
966229997Sken/* FA */
967229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
968229997Sken
969229997Sken/* FB */
970229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
971229997Sken
972229997Sken/* FC */
973229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
974229997Sken
975229997Sken/* FD */
976229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
977229997Sken
978229997Sken/* FE */
979229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
980229997Sken
981229997Sken/* FF */
982229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
983229997Sken
984229997Sken};
985229997Sken