ctl_cmd_table.c revision 269295
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 269295 2014-07-30 07:16:08Z 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/*
61268674Smav * Whenever support for a new command is added, it should be added to these
62268674Smav * tables.
63229997Sken */
64268674Smav
65268674Smav/* 5E PERSISTENT RESERVE IN */
66268674Smavconst struct ctl_cmd_entry ctl_cmd_table_5e[32] =
67229997Sken{
68268674Smav/* 00 READ KEYS */
69269295Smav{ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
70268674Smav						CTL_CMD_FLAG_OK_ON_BOTH |
71268674Smav						CTL_CMD_FLAG_OK_ON_STOPPED |
72268674Smav						CTL_CMD_FLAG_OK_ON_INOPERABLE |
73268674Smav						CTL_CMD_FLAG_OK_ON_SECONDARY |
74268674Smav						CTL_FLAG_DATA_IN |
75268674Smav						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
76268674Smav CTL_LUN_PAT_NONE,
77268674Smav 10, { 0x00, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
78268674Smav
79268674Smav/* 01 READ RESERVATION */
80269295Smav{ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
81268674Smav						CTL_CMD_FLAG_OK_ON_BOTH |
82268674Smav						CTL_CMD_FLAG_OK_ON_STOPPED |
83268674Smav						CTL_CMD_FLAG_OK_ON_INOPERABLE |
84268674Smav						CTL_CMD_FLAG_OK_ON_SECONDARY |
85268674Smav						CTL_FLAG_DATA_IN |
86268674Smav						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
87268674Smav CTL_LUN_PAT_NONE,
88268674Smav 10, { 0x01, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
89268674Smav
90268674Smav/* 02 REPORT CAPABILITIES */
91268674Smav{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
92268674Smav					    CTL_CMD_FLAG_OK_ON_BOTH |
93268674Smav					    CTL_CMD_FLAG_OK_ON_STOPPED |
94268674Smav					    CTL_CMD_FLAG_OK_ON_INOPERABLE |
95268674Smav					    CTL_CMD_FLAG_OK_ON_SECONDARY |
96268674Smav					    CTL_FLAG_DATA_IN |
97268674Smav					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
98268674Smav CTL_LUN_PAT_NONE,
99268674Smav 10, { 0x02, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
100268674Smav
101268674Smav/* 03 READ FULL STATUS */
102268694Smav{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
103268694Smav					    CTL_CMD_FLAG_OK_ON_BOTH |
104268694Smav					    CTL_CMD_FLAG_OK_ON_STOPPED |
105268694Smav					    CTL_CMD_FLAG_OK_ON_INOPERABLE |
106268694Smav					    CTL_CMD_FLAG_OK_ON_SECONDARY |
107268694Smav					    CTL_FLAG_DATA_IN |
108268694Smav					    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
109268694Smav CTL_LUN_PAT_NONE,
110268694Smav 10, { 0x03, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
111268674Smav
112268674Smav/* 04-1f */
113268674Smav};
114268674Smav
115268674Smav/* 5F PERSISTENT RESERVE OUT */
116268674Smavconst struct ctl_cmd_entry ctl_cmd_table_5f[32] =
117268674Smav{
118268674Smav/* 00 REGISTER */
119269295Smav{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
120269295Smav						CTL_CMD_FLAG_OK_ON_BOTH |
121269295Smav						CTL_CMD_FLAG_OK_ON_STOPPED |
122269295Smav						CTL_CMD_FLAG_OK_ON_INOPERABLE |
123269295Smav						CTL_CMD_FLAG_OK_ON_SECONDARY |
124269295Smav						CTL_FLAG_DATA_OUT |
125269295Smav						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
126268674Smav CTL_LUN_PAT_NONE,
127268674Smav 10, { 0x00, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
128268674Smav
129268674Smav/* 01 RESERVE */
130269295Smav{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
131269295Smav						CTL_CMD_FLAG_OK_ON_BOTH |
132269295Smav						CTL_CMD_FLAG_OK_ON_STOPPED |
133269295Smav						CTL_CMD_FLAG_OK_ON_INOPERABLE |
134269295Smav						CTL_CMD_FLAG_OK_ON_SECONDARY |
135269295Smav						CTL_FLAG_DATA_OUT |
136269295Smav						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
137268674Smav CTL_LUN_PAT_NONE,
138268674Smav 10, { 0x01, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
139268674Smav
140268674Smav/* 02 RELEASE */
141269295Smav{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
142269295Smav						CTL_CMD_FLAG_OK_ON_BOTH |
143269295Smav						CTL_CMD_FLAG_OK_ON_STOPPED |
144269295Smav						CTL_CMD_FLAG_OK_ON_INOPERABLE |
145269295Smav						CTL_CMD_FLAG_OK_ON_SECONDARY |
146269295Smav						CTL_FLAG_DATA_OUT |
147269295Smav						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
148268674Smav CTL_LUN_PAT_NONE,
149268674Smav 10, { 0x02, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
150268674Smav
151268674Smav/* 03 CLEAR */
152269295Smav{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
153269295Smav						CTL_CMD_FLAG_OK_ON_BOTH |
154269295Smav						CTL_CMD_FLAG_OK_ON_STOPPED |
155269295Smav						CTL_CMD_FLAG_OK_ON_INOPERABLE |
156269295Smav						CTL_CMD_FLAG_OK_ON_SECONDARY |
157269295Smav						CTL_FLAG_DATA_OUT |
158269295Smav						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
159268674Smav CTL_LUN_PAT_NONE,
160268674Smav 10, { 0x03, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
161268674Smav
162268674Smav/* 04 PREEMPT */
163269295Smav{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
164269295Smav						CTL_CMD_FLAG_OK_ON_BOTH |
165269295Smav						CTL_CMD_FLAG_OK_ON_STOPPED |
166269295Smav						CTL_CMD_FLAG_OK_ON_INOPERABLE |
167269295Smav						CTL_CMD_FLAG_OK_ON_SECONDARY |
168269295Smav						CTL_FLAG_DATA_OUT |
169269295Smav						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
170268674Smav CTL_LUN_PAT_NONE,
171268674Smav 10, { 0x04, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
172268674Smav
173268674Smav/* 05 PREEMPT AND ABORT */
174268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
175268674Smav
176268674Smav/* 06 REGISTER AND IGNORE EXISTING KEY */
177269295Smav{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
178269295Smav						CTL_CMD_FLAG_OK_ON_BOTH |
179269295Smav						CTL_CMD_FLAG_OK_ON_STOPPED |
180269295Smav						CTL_CMD_FLAG_OK_ON_INOPERABLE |
181269295Smav						CTL_CMD_FLAG_OK_ON_SECONDARY |
182269295Smav						CTL_FLAG_DATA_OUT |
183269295Smav						CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
184268674Smav CTL_LUN_PAT_NONE,
185268674Smav 10, { 0x06, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
186268674Smav
187268674Smav/* 07 REGISTER AND MOVE */
188268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
189268674Smav
190268674Smav/* 08-1f */
191268674Smav};
192268674Smav
193268674Smav/* 9E SERVICE ACTION IN(16) */
194268674Smavconst struct ctl_cmd_entry ctl_cmd_table_9e[32] =
195268674Smav{
196268674Smav/* 00 */
197268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
198268674Smav
199268674Smav/* 01 */
200268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
201268674Smav
202268674Smav/* 02 */
203268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
204268674Smav
205268674Smav/* 03 */
206268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
207268674Smav
208268674Smav/* 04 */
209268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
210268674Smav
211268674Smav/* 05 */
212268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
213268674Smav
214268674Smav/* 06 */
215268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
216268674Smav
217268674Smav/* 07 */
218268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
219268674Smav
220268674Smav/* 08 */
221268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
222268674Smav
223268674Smav/* 09 */
224268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
225268674Smav
226268674Smav/* 0A */
227268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
228268674Smav
229268674Smav/* 0B */
230268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
231268674Smav
232268674Smav/* 0C */
233268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
234268674Smav
235268674Smav/* 0D */
236268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
237268674Smav
238268674Smav/* 0E */
239268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
240268674Smav
241268674Smav/* 0F */
242268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
243268674Smav
244268674Smav/* 10 */
245268674Smav{ctl_read_capacity_16, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
246268674Smav					  CTL_CMD_FLAG_OK_ON_STOPPED |
247268674Smav					  CTL_CMD_FLAG_OK_ON_INOPERABLE |
248268674Smav					  CTL_CMD_FLAG_OK_ON_SECONDARY |
249268674Smav					  CTL_FLAG_DATA_IN |
250268674Smav					  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
251268674Smav CTL_LUN_PAT_READCAP,
252268674Smav 16, {0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
253268674Smav
254268674Smav/* 11-1f */
255268674Smav};
256268674Smav
257268674Smav/* A3 MAINTENANCE IN */
258268674Smavconst struct ctl_cmd_entry ctl_cmd_table_a3[32] =
259268674Smav{
260268674Smav/* 00 */
261268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
262268674Smav
263268674Smav/* 01 */
264268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
265268674Smav
266268674Smav/* 02 */
267268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
268268674Smav
269268674Smav/* 03 */
270268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
271268674Smav
272268674Smav/* 04 */
273268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
274268674Smav
275268674Smav/* 05 */
276268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
277268674Smav
278268674Smav/* 06 */
279268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
280268674Smav
281268674Smav/* 07 */
282268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
283268674Smav
284268674Smav/* 08 */
285268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
286268674Smav
287268674Smav/* 09 */
288268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
289268674Smav
290268674Smav/* 0A REPORT TARGET PORT GROUPS */
291269295Smav{ctl_report_tagret_port_groups, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
292269295Smav						CTL_CMD_FLAG_OK_ON_STOPPED |
293269295Smav						CTL_CMD_FLAG_OK_ON_INOPERABLE |
294269295Smav						CTL_CMD_FLAG_OK_ON_SECONDARY |
295269295Smav						CTL_FLAG_DATA_IN,
296268674Smav CTL_LUN_PAT_NONE,
297268674Smav 12, {0x0a, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
298268674Smav
299268674Smav/* 0B */
300268674Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
301268674Smav
302268674Smav/* 0C REPORT SUPPORTED_OPCODES */
303269295Smav{ctl_report_supported_opcodes, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
304269295Smav						CTL_CMD_FLAG_OK_ON_STOPPED |
305269295Smav						CTL_CMD_FLAG_OK_ON_INOPERABLE |
306269295Smav						CTL_CMD_FLAG_OK_ON_SECONDARY |
307269295Smav						CTL_FLAG_DATA_IN,
308268674Smav CTL_LUN_PAT_NONE,
309268674Smav 12, {0x0c, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
310268674Smav
311268674Smav/* 0D REPORT SUPPORTED_TASK MANAGEMENT FUNCTIONS */
312269295Smav{ctl_report_supported_tmf, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
313269295Smav					   CTL_CMD_FLAG_OK_ON_STOPPED |
314269295Smav					   CTL_CMD_FLAG_OK_ON_INOPERABLE |
315269295Smav					   CTL_CMD_FLAG_OK_ON_SECONDARY |
316269295Smav					   CTL_FLAG_DATA_IN,
317268674Smav CTL_LUN_PAT_NONE,
318268674Smav 12, {0x0d, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
319268674Smav
320268675Smav/* 0E */
321268675Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
322268675Smav
323268675Smav/* 0F REPORT TIMESTAMP */
324269295Smav{ctl_report_timestamp, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
325269295Smav					CTL_CMD_FLAG_OK_ON_STOPPED |
326269295Smav					CTL_CMD_FLAG_OK_ON_INOPERABLE |
327269295Smav					CTL_CMD_FLAG_OK_ON_SECONDARY |
328269295Smav					CTL_FLAG_DATA_IN,
329268675Smav CTL_LUN_PAT_NONE,
330268675Smav 12, {0x0f, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
331268675Smav
332268675Smav/* 10-1f */
333268674Smav};
334268674Smav
335268674Smavconst struct ctl_cmd_entry ctl_cmd_table[256] =
336268674Smav{
337229997Sken/* 00 TEST UNIT READY */
338229997Sken{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
339229997Sken			  CTL_FLAG_DATA_NONE |
340229997Sken			  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
341268674Smav CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}},
342229997Sken
343229997Sken/* 01 REWIND */
344229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
345229997Sken
346229997Sken/* 02 */
347229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
348229997Sken
349229997Sken/* 03 REQUEST SENSE */
350229997Sken{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
351229997Sken				       CTL_CMD_FLAG_OK_ON_ALL_LUNS |
352229997Sken				       CTL_CMD_FLAG_ALLOW_ON_RESV |
353229997Sken				       CTL_CMD_FLAG_NO_SENSE |
354229997Sken				       CTL_CMD_FLAG_OK_ON_STOPPED |
355229997Sken				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
356229997Sken				       CTL_CMD_FLAG_OK_ON_OFFLINE |
357229997Sken				       CTL_CMD_FLAG_OK_ON_SECONDARY |
358229997Sken				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
359268674Smav CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}},
360229997Sken
361229997Sken/* 04 FORMAT UNIT */
362229997Sken{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN |
363229997Sken				CTL_CMD_FLAG_OK_ON_INOPERABLE |
364229997Sken				CTL_FLAG_DATA_OUT,
365268674Smav CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}},
366229997Sken
367229997Sken/* 05 READ BLOCK LIMITS */
368229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
369229997Sken
370229997Sken/* 06 */
371229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
372229997Sken
373229997Sken/* 07 REASSIGN BLOCKS */
374229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
375229997Sken
376229997Sken/* 08 READ(6) */
377229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
378229997Sken				  CTL_FLAG_DATA_IN |
379229997Sken				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
380268674Smav CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
381229997Sken
382229997Sken/* 09 */
383229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
384229997Sken
385229997Sken/* 0A WRITE(6) */
386229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
387229997Sken				   CTL_FLAG_DATA_OUT,
388268674Smav CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
389229997Sken
390229997Sken/* 0B SEEK(6) */
391229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
392229997Sken
393229997Sken/* 0C */
394229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
395229997Sken
396229997Sken/* 0D */
397229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
398229997Sken
399229997Sken/* 0E */
400229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
401229997Sken
402229997Sken/* 0F READ REVERSE(6) */
403229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
404229997Sken
405229997Sken/* 10 WRITE FILEMARKS(6) */
406229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
407229997Sken
408229997Sken/* 11 SPACE(6) */
409229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
410229997Sken
411229997Sken/* 12 INQUIRY */
412229997Sken{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
413229997Sken			      CTL_CMD_FLAG_ALLOW_ON_RESV |
414229997Sken			      CTL_CMD_FLAG_NO_SENSE |
415229997Sken			      CTL_CMD_FLAG_OK_ON_STOPPED |
416229997Sken			      CTL_CMD_FLAG_OK_ON_INOPERABLE |
417229997Sken			      CTL_CMD_FLAG_OK_ON_OFFLINE |
418229997Sken			      CTL_CMD_FLAG_OK_ON_SECONDARY |
419229997Sken			      CTL_FLAG_DATA_IN |
420229997Sken			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
421268674Smav CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}},
422229997Sken
423229997Sken/* 13 */
424229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
425229997Sken
426229997Sken/* 14 RECOVER BUFFERED DATA */
427229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
428229997Sken
429229997Sken/* 15 MODE SELECT(6) */
430229997Sken{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
431229997Sken				     CTL_CMD_FLAG_OK_ON_STOPPED |
432229997Sken				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
433229997Sken				     CTL_CMD_FLAG_OK_ON_SECONDARY |
434229997Sken				     CTL_FLAG_DATA_OUT,
435268674Smav CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}},
436229997Sken
437229997Sken/* 16 RESERVE(6) */
438269295Smav{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
439229997Sken				    CTL_CMD_FLAG_OK_ON_BOTH |
440229997Sken				    CTL_CMD_FLAG_OK_ON_STOPPED |
441229997Sken				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
442229997Sken				    CTL_CMD_FLAG_OK_ON_SECONDARY |
443229997Sken				    CTL_FLAG_DATA_OUT,
444268674Smav CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
445229997Sken
446229997Sken/* 17 RELEASE(6) */
447269295Smav{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
448229997Sken				   CTL_CMD_FLAG_OK_ON_BOTH |
449229997Sken				   CTL_CMD_FLAG_OK_ON_STOPPED |
450229997Sken				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
451229997Sken				   CTL_CMD_FLAG_OK_ON_SECONDARY |
452229997Sken				   CTL_FLAG_DATA_NONE,
453268674Smav CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
454229997Sken
455229997Sken/* 18 COPY */
456229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
457229997Sken
458229997Sken/* 19 ERASE(6) */
459229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
460229997Sken
461229997Sken/* 1A MODE SENSE(6) */
462229997Sken{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
463229997Sken				    CTL_CMD_FLAG_OK_ON_STOPPED |
464229997Sken				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
465229997Sken				    CTL_CMD_FLAG_OK_ON_SECONDARY |
466268551Smav				    CTL_FLAG_DATA_IN |
467268551Smav				    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
468268674Smav CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0, 0xff, 0x07}},
469229997Sken
470229997Sken/* 1B START STOP UNIT */
471229997Sken{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
472229997Sken				   CTL_CMD_FLAG_OK_ON_STOPPED |
473229997Sken				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
474229997Sken				   CTL_CMD_FLAG_OK_ON_OFFLINE |
475229997Sken				   CTL_FLAG_DATA_NONE |
476229997Sken				   CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
477268674Smav CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}},
478229997Sken
479229997Sken/* 1C RECEIVE DIAGNOSTIC RESULTS */
480229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
481229997Sken
482229997Sken/* 1D SEND DIAGNOSTIC */
483229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
484229997Sken
485229997Sken/* 1E PREVENT ALLOW MEDIUM REMOVAL */
486229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
487229997Sken
488229997Sken/* 1F */
489229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
490229997Sken
491229997Sken/* 20 */
492229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
493229997Sken
494229997Sken/* 21 */
495229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
496229997Sken
497229997Sken/* 22 */
498229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
499229997Sken
500229997Sken/* 23 */
501229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
502229997Sken
503229997Sken/* 24 SET WINDOW */
504229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
505229997Sken
506229997Sken/* 25 READ CAPACITY(10) */
507229997Sken{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN|
508229997Sken				       CTL_CMD_FLAG_OK_ON_STOPPED |
509229997Sken				       CTL_CMD_FLAG_OK_ON_INOPERABLE |
510229997Sken				       CTL_CMD_FLAG_OK_ON_SECONDARY |
511229997Sken				       CTL_FLAG_DATA_IN |
512229997Sken				       CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
513268674Smav CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
514229997Sken
515229997Sken/* 26 */
516229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
517229997Sken
518229997Sken/* 27 */
519229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
520229997Sken
521229997Sken/* 28 READ(10) */
522229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
523229997Sken				  CTL_FLAG_DATA_IN |
524229997Sken				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
525268674Smav CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
526268674Smav 10, {0x18, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
527229997Sken
528229997Sken/* 29 READ GENERATION */
529229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
530229997Sken
531229997Sken/* 2A WRITE(10) */
532229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
533268674Smav CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
534268674Smav 10, {0x18, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
535229997Sken
536229997Sken/* 2B SEEK(10) */
537229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
538229997Sken
539229997Sken/* 2C ERASE(10) */
540229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
541229997Sken
542229997Sken/* 2D READ UPDATED BLOCK */
543229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
544229997Sken
545229997Sken/* 2E WRITE AND VERIFY(10) */
546229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
547268674Smav CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
548268674Smav 10, {0x10, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
549229997Sken
550229997Sken/* 2F VERIFY(10) */
551268151Smav{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
552268151Smav			      CTL_FLAG_DATA_OUT |
553268151Smav			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
554268674Smav CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
555268674Smav 10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
556229997Sken
557229997Sken/* 30 SEARCH DATA HIGH(10) */
558229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
559229997Sken
560229997Sken/* 31 SEARCH DATA EQUAL(10) */
561229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
562229997Sken
563229997Sken/* 32 SEARCH DATA LOW(10) */
564229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
565229997Sken
566229997Sken/* 33 SET LIMITS(10) */
567229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
568229997Sken
569229997Sken/* 34 PRE-FETCH(10) */
570229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
571229997Sken
572229997Sken/* 35 SYNCHRONIZE CACHE(10) */
573229997Sken{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
574229997Sken				   CTL_FLAG_DATA_NONE,
575268674Smav CTL_LUN_PAT_NONE,
576268674Smav 10, {0, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
577229997Sken
578229997Sken/* 36 LOCK UNLOCK CACHE(10) */
579229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
580229997Sken
581229997Sken/* 37 READ DEFECT DATA(10) */
582229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
583229997Sken
584229997Sken/* 38 MEDIUM SCAN */
585229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
586229997Sken
587229997Sken/* 39 COMPARE */
588229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
589229997Sken
590229997Sken/* 3A COPY AND VERIFY */
591229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
592229997Sken
593229997Sken/* 3B WRITE BUFFER */
594268550Smav{ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
595268550Smav				      CTL_FLAG_DATA_OUT,
596268674Smav CTL_LUN_PAT_NONE,
597268674Smav 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
598229997Sken
599229997Sken/* 3C READ BUFFER */
600268550Smav{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
601268550Smav				     CTL_FLAG_DATA_IN |
602268550Smav				     CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
603268674Smav CTL_LUN_PAT_NONE,
604268674Smav 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
605229997Sken
606229997Sken/* 3D UPDATE BLOCK */
607229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
608229997Sken
609229997Sken/* 3E READ LONG */
610229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
611229997Sken
612229997Sken/* 3F WRITE LONG */
613229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
614229997Sken
615229997Sken/* 40 CHANGE DEFINITION */
616229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
617229997Sken
618229997Sken/* 41 WRITE SAME(10) */
619265634Smav{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
620265634Smav				   CTL_FLAG_DATA_OUT,
621268674Smav CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
622268674Smav 10, {0x0a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
623229997Sken
624265634Smav/* 42 READ SUB-CHANNEL / UNMAP */
625265634Smav{ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT,
626268674Smav CTL_LUN_PAT_WRITE,
627268674Smav 10, {0, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
628229997Sken
629229997Sken/* 43 READ TOC/PMA/ATIP */
630229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
631229997Sken
632229997Sken/* 44 REPORT DENSITY SUPPORT */
633229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
634229997Sken
635229997Sken/* 45 PLAY AUDIO(10) */
636229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
637229997Sken
638229997Sken/* 46 GET CONFIGURATION */
639229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
640229997Sken
641229997Sken/* 47 PLAY AUDIO MSF */
642229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
643229997Sken
644229997Sken/* 48 PLAY AUDIO TRACK INDEX */
645229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
646229997Sken
647229997Sken/* 49 PLAY TRACK RELATIVE(10) */
648229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
649229997Sken
650229997Sken/* 4A GET EVENT STATUS NOTIFICATION */
651229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
652229997Sken
653229997Sken/* 4B PAUSE/RESUME */
654229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
655229997Sken
656229997Sken/* 4C LOG SELECT */
657229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
658229997Sken
659229997Sken/* 4D LOG SENSE */
660229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
661229997Sken
662229997Sken/* 4E STOP PLAY/SCAN */
663229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
664229997Sken
665229997Sken/* 4F */
666229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
667229997Sken
668229997Sken/* 50 XDWRITE(10) */
669229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
670229997Sken
671229997Sken/* 51 XPWRITE(10) */
672229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
673229997Sken
674229997Sken/* 52 XDREAD(10) */
675229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
676229997Sken
677229997Sken/* 53 RESERVE TRACK */
678229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
679229997Sken
680229997Sken/* 54 SEND OPC INFORMATION */
681229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
682229997Sken
683229997Sken/* 55 MODE SELECT(10) */
684229997Sken{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
685229997Sken				     CTL_CMD_FLAG_OK_ON_STOPPED |
686229997Sken				     CTL_CMD_FLAG_OK_ON_INOPERABLE |
687229997Sken				     CTL_CMD_FLAG_OK_ON_SECONDARY |
688229997Sken				     CTL_FLAG_DATA_OUT,
689268674Smav CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
690229997Sken
691229997Sken/* 56 RESERVE(10) */
692269295Smav{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
693229997Sken				    CTL_CMD_FLAG_OK_ON_BOTH |
694229997Sken				    CTL_CMD_FLAG_OK_ON_STOPPED |
695229997Sken				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
696229997Sken				    CTL_CMD_FLAG_OK_ON_SECONDARY |
697229997Sken				    CTL_FLAG_DATA_OUT,
698268674Smav CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
699229997Sken
700229997Sken/* 57 RELEASE(10) */
701269295Smav{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
702229997Sken				   CTL_CMD_FLAG_OK_ON_BOTH |
703229997Sken				   CTL_CMD_FLAG_OK_ON_STOPPED |
704229997Sken				   CTL_CMD_FLAG_OK_ON_INOPERABLE |
705229997Sken				   CTL_CMD_FLAG_OK_ON_SECONDARY |
706229997Sken				   CTL_FLAG_DATA_OUT,
707268674Smav CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
708229997Sken
709229997Sken/* 58 REPAIR TRACK */
710229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
711229997Sken
712229997Sken/* 59 READ MASTER CUE */
713229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
714229997Sken
715229997Sken/* 5A MODE SENSE(10) */
716229997Sken{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
717229997Sken				    CTL_CMD_FLAG_OK_ON_STOPPED |
718229997Sken				    CTL_CMD_FLAG_OK_ON_INOPERABLE |
719229997Sken				    CTL_CMD_FLAG_OK_ON_SECONDARY |
720268551Smav				    CTL_FLAG_DATA_IN |
721268551Smav				    CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
722268674Smav CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
723229997Sken
724229997Sken/* 5B CLOSE TRACK/SESSION */
725229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
726229997Sken
727229997Sken/* 5C READ BUFFER CAPACITY */
728229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
729229997Sken
730229997Sken/* 5D SEND CUE SHEET */
731229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
732229997Sken
733229997Sken/* 5E PERSISTENT RESERVE IN */
734268674Smav{__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
735229997Sken CTL_LUN_PAT_NONE},
736229997Sken
737229997Sken/* 5F PERSISTENT RESERVE OUT */
738268674Smav{__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
739229997Sken CTL_LUN_PAT_NONE},
740229997Sken
741229997Sken/* 60 */
742229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
743229997Sken
744229997Sken/* 61 */
745229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
746229997Sken
747229997Sken/* 62 */
748229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
749229997Sken
750229997Sken/* 63 */
751229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
752229997Sken
753229997Sken/* 64 */
754229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
755229997Sken
756229997Sken/* 65 */
757229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
758229997Sken
759229997Sken/* 66 */
760229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
761229997Sken
762229997Sken/* 67 */
763229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
764229997Sken
765229997Sken/* 68 */
766229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
767229997Sken
768229997Sken/* 69 */
769229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
770229997Sken
771229997Sken/* 6A */
772229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
773229997Sken
774229997Sken/* 6B */
775229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
776229997Sken
777229997Sken/* 6C */
778229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
779229997Sken
780229997Sken/* 6D */
781229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
782229997Sken
783229997Sken/* 6E */
784229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
785229997Sken
786229997Sken/* 6F */
787229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
788229997Sken
789229997Sken/* 70 */
790229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
791229997Sken
792229997Sken/* 71 */
793229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
794229997Sken
795229997Sken/* 72 */
796229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
797229997Sken
798229997Sken/* 73 */
799229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
800229997Sken
801229997Sken/* 74 */
802229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
803229997Sken
804229997Sken/* 75 */
805229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
806229997Sken
807229997Sken/* 76 */
808229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
809229997Sken
810229997Sken/* 77 */
811229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
812229997Sken
813229997Sken/* 78 */
814229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
815229997Sken
816229997Sken/* 79 */
817229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
818229997Sken
819229997Sken/* 7A */
820229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
821229997Sken
822229997Sken/* 7B */
823229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
824229997Sken
825229997Sken/* 7C */
826229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
827229997Sken
828229997Sken/* 7D */
829229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
830229997Sken
831229997Sken/* 7E */
832229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
833229997Sken
834229997Sken/* 7F */
835229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
836229997Sken
837229997Sken/* 80 XDWRITE EXTENDED(16) */
838229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
839229997Sken
840229997Sken/* 81 REBUILD(16) */
841229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
842229997Sken
843229997Sken/* 82 REGENERATE(16) */
844229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
845229997Sken
846229997Sken/* 83 EXTENDED COPY */
847229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
848229997Sken
849229997Sken/* 84 RECEIVE COPY RESULTS */
850229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
851229997Sken
852229997Sken/* 85 */
853229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
854229997Sken
855229997Sken/* 86 ACCESS CONTROL IN */
856229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
857229997Sken
858229997Sken/* 87 ACCESS CONTROL OUT */
859229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
860229997Sken
861229997Sken/* 88 READ(16) */
862229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
863229997Sken                                  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
864268674Smav CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
865268674Smav 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
866268674Smav      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
867229997Sken
868268151Smav/* 89 COMPARE AND WRITE */
869268151Smav{ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
870268674Smav CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
871268674Smav 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
872268674Smav      0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}},
873229997Sken
874229997Sken/* 8A WRITE(16) */
875229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
876268674Smav CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
877268674Smav 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
878268674Smav      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
879229997Sken
880229997Sken/* 8B */
881229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
882229997Sken
883229997Sken/* 8C READ ATTRIBUTE */
884229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
885229997Sken
886229997Sken/* 8D WRITE ATTRIBUTE */
887229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
888229997Sken
889229997Sken/* 8E WRITE AND VERIFY(16) */
890229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
891268674Smav CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
892268674Smav 16, {0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
893268674Smav      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
894229997Sken
895229997Sken/* 8F VERIFY(16) */
896268151Smav{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
897268151Smav			      CTL_FLAG_DATA_OUT |
898268151Smav			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
899268674Smav CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
900268674Smav 16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
901268674Smav      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
902229997Sken
903229997Sken/* 90 PRE-FETCH(16) */
904229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
905229997Sken
906229997Sken/* 91 SYNCHRONIZE CACHE(16) */
907229997Sken{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
908229997Sken				   CTL_FLAG_DATA_NONE,
909268674Smav CTL_LUN_PAT_NONE,
910268674Smav 16, {0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
911268674Smav      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
912229997Sken
913229997Sken/* 92 LOCK UNLOCK CACHE(16) */
914229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
915229997Sken
916229997Sken/* 93 WRITE SAME(16) */
917265634Smav{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
918265634Smav				   CTL_FLAG_DATA_OUT,
919268674Smav CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
920268674Smav 16, {0x0a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
921268674Smav      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
922229997Sken
923229997Sken/* 94 */
924229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
925229997Sken
926229997Sken/* 95 */
927229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
928229997Sken
929229997Sken/* 96 */
930229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
931229997Sken
932229997Sken/* 97 */
933229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
934229997Sken
935229997Sken/* 98 */
936229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
937229997Sken
938229997Sken/* 99 */
939229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
940229997Sken
941229997Sken/* 9A */
942229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
943229997Sken
944229997Sken/* 9B */
945229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
946229997Sken
947229997Sken/* 9C */
948229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
949229997Sken
950229997Sken/* 9D */
951229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
952229997Sken
953229997Sken/* 9E SERVICE ACTION IN(16) */
954268674Smav{__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
955268674Smav CTL_LUN_PAT_NONE},
956229997Sken
957229997Sken/* 9F SERVICE ACTION OUT(16) */
958229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
959229997Sken
960229997Sken/* A0 REPORT LUNS */
961229997Sken{ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
962229997Sken				  CTL_CMD_FLAG_ALLOW_ON_RESV |
963229997Sken				  CTL_CMD_FLAG_NO_SENSE |
964229997Sken				  CTL_CMD_FLAG_OK_ON_STOPPED |
965229997Sken				  CTL_CMD_FLAG_OK_ON_INOPERABLE |
966229997Sken				  CTL_CMD_FLAG_OK_ON_OFFLINE |
967229997Sken				  CTL_CMD_FLAG_OK_ON_SECONDARY |
968229997Sken				  CTL_FLAG_DATA_IN |
969229997Sken				  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
970268674Smav CTL_LUN_PAT_NONE,
971268674Smav 12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
972229997Sken
973229997Sken/* A1 BLANK */
974229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
975229997Sken
976229997Sken/* A2 SEND EVENT */
977229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
978229997Sken
979268674Smav/* A3 MAINTENANCE IN */
980268674Smav{__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
981229997Sken CTL_LUN_PAT_NONE},
982229997Sken
983268674Smav/* A4 MAINTENANCE OUT */
984229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
985229997Sken
986229997Sken/* A5 MOVE MEDIUM */
987229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
988229997Sken
989229997Sken/* A6 EXCHANGE MEDIUM */
990229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
991229997Sken
992229997Sken/* A7 MOVE MEDIUM ATTACHED */
993229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
994229997Sken
995229997Sken/* A8 READ(12) */
996229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
997229997Sken                                  CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
998268674Smav CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
999268674Smav 12, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1000229997Sken
1001229997Sken/* A9 PLAY TRACK RELATIVE(12) */
1002229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1003229997Sken
1004229997Sken/* AA WRITE(12) */
1005229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1006268674Smav CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1007268674Smav 12, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1008229997Sken
1009229997Sken/* AB SERVICE ACTION IN(12) */
1010229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1011229997Sken
1012229997Sken/* AC ERASE(12) */
1013229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1014229997Sken
1015229997Sken/* AD READ DVD STRUCTURE */
1016229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1017229997Sken
1018229997Sken/* AE WRITE AND VERIFY(12) */
1019229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1020268674Smav CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1021268674Smav 12, {0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1022229997Sken
1023229997Sken/* AF VERIFY(12) */
1024268151Smav{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
1025268151Smav			      CTL_FLAG_DATA_OUT |
1026268151Smav			      CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1027268674Smav CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1028268674Smav 12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1029229997Sken
1030229997Sken/* B0 SEARCH DATA HIGH(12) */
1031229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1032229997Sken
1033229997Sken/* B1 SEARCH DATA EQUAL(12) */
1034229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1035229997Sken
1036229997Sken/* B2 SEARCH DATA LOW(12) */
1037229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1038229997Sken
1039229997Sken/* B3 SET LIMITS(12) */
1040229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1041229997Sken
1042229997Sken/* B4 READ ELEMENT STATUS ATTACHED */
1043229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1044229997Sken
1045229997Sken/* B5 REQUEST VOLUME ELEMENT ADDRESS */
1046229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1047229997Sken
1048229997Sken/* B6 SEND VOLUME TAG */
1049229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1050229997Sken
1051229997Sken/* B7 READ DEFECT DATA(12) */
1052229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1053229997Sken
1054229997Sken/* B8 READ ELEMENT STATUS */
1055229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1056229997Sken
1057229997Sken/* B9 READ CD MSF */
1058229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1059229997Sken
1060268674Smav/* BA REDUNDANCY GROUP IN */
1061229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1062229997Sken
1063268674Smav/* BB REDUNDANCY GROUP OUT */
1064229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1065229997Sken
1066268674Smav/* BC SPARE IN */
1067229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1068229997Sken
1069268674Smav/* BD SPARE OUT */
1070229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1071229997Sken
1072268674Smav/* BE VOLUME SET IN */
1073229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1074229997Sken
1075268674Smav/* BF VOLUME SET OUT */
1076229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1077229997Sken
1078229997Sken/* C0 - ISC_SEND_MSG_SHORT */
1079229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1080229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE,
1081268674Smav CTL_LUN_PAT_NONE,
1082268674Smav 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1083268674Smav      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1084229997Sken
1085229997Sken/* C1 - ISC_SEND_MSG */
1086229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1087229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1088268674Smav CTL_LUN_PAT_NONE,
1089268674Smav 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1090268674Smav      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1091229997Sken
1092229997Sken/* C2 - ISC_WRITE */
1093229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1094229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1095268674Smav CTL_LUN_PAT_NONE,
1096268674Smav 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1097268674Smav      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1098229997Sken
1099229997Sken/* C3 - ISC_READ */
1100229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1101229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN,
1102268674Smav CTL_LUN_PAT_NONE,
1103268674Smav 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1104268674Smav      0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1105229997Sken
1106229997Sken/* C4 */
1107229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1108229997Sken
1109229997Sken/* C5 */
1110229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1111229997Sken
1112229997Sken/* C6 */
1113229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1114229997Sken
1115229997Sken/* C7 */
1116229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1117229997Sken
1118229997Sken/* C8 */
1119229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1120229997Sken
1121229997Sken/* C9 */
1122229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1123229997Sken
1124229997Sken/* CA */
1125229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1126229997Sken
1127229997Sken/* CB */
1128229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1129229997Sken
1130229997Sken/* CC */
1131229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1132229997Sken
1133229997Sken/* CD */
1134229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1135229997Sken
1136229997Sken/* CE */
1137229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1138229997Sken
1139229997Sken/* CF */
1140229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1141229997Sken
1142229997Sken/* D0 */
1143229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1144229997Sken
1145229997Sken/* D1 */
1146229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1147229997Sken
1148229997Sken/* D2 */
1149229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1150229997Sken
1151229997Sken/* D3 */
1152229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1153229997Sken
1154229997Sken/* D4 */
1155229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1156229997Sken
1157229997Sken/* D5 */
1158229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1159229997Sken
1160229997Sken/* D6 */
1161229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1162229997Sken
1163229997Sken/* D7 */
1164229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1165229997Sken
1166229997Sken/* D8 */
1167229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1168229997Sken
1169229997Sken/* D9 */
1170229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1171229997Sken
1172229997Sken/* DA */
1173229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1174229997Sken
1175229997Sken/* DB */
1176229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1177229997Sken
1178229997Sken/* DC */
1179229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1180229997Sken
1181229997Sken/* DD */
1182229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1183229997Sken
1184229997Sken/* DE */
1185229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1186229997Sken
1187229997Sken/* DF */
1188229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1189229997Sken
1190229997Sken/* E0 */
1191229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1192229997Sken
1193229997Sken/* E1 */
1194229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1195229997Sken
1196229997Sken/* E2 */
1197229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1198229997Sken
1199229997Sken/* E3 */
1200229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1201229997Sken
1202229997Sken/* E4 */
1203229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1204229997Sken
1205229997Sken/* E5 */
1206229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1207229997Sken
1208229997Sken/* E6 */
1209229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1210229997Sken
1211229997Sken/* E7 */
1212229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1213229997Sken
1214229997Sken/* E8 */
1215229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1216229997Sken
1217229997Sken/* E9 */
1218229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1219229997Sken
1220229997Sken/* EA */
1221229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1222229997Sken
1223229997Sken/* EB */
1224229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1225229997Sken
1226229997Sken/* EC */
1227229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1228229997Sken
1229229997Sken/* ED */
1230229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1231229997Sken
1232229997Sken/* EE */
1233229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1234229997Sken
1235229997Sken/* EF */
1236229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1237229997Sken
1238229997Sken/* F0 */
1239229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1240229997Sken
1241229997Sken/* F1 */
1242229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1243229997Sken
1244229997Sken/* F2 */
1245229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1246229997Sken
1247229997Sken/* F3 */
1248229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1249229997Sken
1250229997Sken/* F4 */
1251229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1252229997Sken
1253229997Sken/* F5 */
1254229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1255229997Sken
1256229997Sken/* F6 */
1257229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1258229997Sken
1259229997Sken/* F7 */
1260229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1261229997Sken
1262229997Sken/* F8 */
1263229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1264229997Sken
1265229997Sken/* F9 */
1266229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1267229997Sken
1268229997Sken/* FA */
1269229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1270229997Sken
1271229997Sken/* FB */
1272229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1273229997Sken
1274229997Sken/* FC */
1275229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1276229997Sken
1277229997Sken/* FD */
1278229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1279229997Sken
1280229997Sken/* FE */
1281229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1282229997Sken
1283229997Sken/* FF */
1284229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}
1285229997Sken
1286229997Sken};
1287