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