2 * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions, and the following disclaimer,
10 * without modification.
11 * 2. Redistributions in binary form must reproduce at minimum a disclaimer
12 * substantially similar to the "NO WARRANTY" disclaimer below
13 * ("Disclaimer") and any redistribution must be conditioned upon
14 * including a substantially similar Disclaimer requirement for further
15 * binary redistribution.
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
27 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGES.
30 * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $
34 * CAM Target Layer command table.
36 * Author: Ken Merry <ken@FreeBSD.org>, Kim Le
39 #include <sys/cdefs.h>
40 #include <sys/param.h>
41 #include <sys/systm.h>
42 #include <sys/kernel.h>
43 #include <sys/types.h>
44 #include <sys/malloc.h>
45 #include <sys/condvar.h>
46 #include <sys/queue.h>
47 #include <sys/sysctl.h>
49 #include <cam/scsi/scsi_all.h>
50 #include <cam/scsi/scsi_da.h>
51 #include <cam/ctl/ctl_io.h>
52 #include <cam/ctl/ctl.h>
53 #include <cam/ctl/ctl_frontend.h>
54 #include <cam/ctl/ctl_backend.h>
55 #include <cam/ctl/ctl_frontend_internal.h>
56 #include <cam/ctl/ctl_ioctl.h>
57 #include <cam/ctl/ctl_ha.h>
58 #include <cam/ctl/ctl_private.h>
61 * Whenever support for a new command is added, it should be added to these
65 /* 5E PERSISTENT RESERVE IN */
66 const struct ctl_cmd_entry ctl_cmd_table_5e[32] =
69 {ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
70 CTL_CMD_FLAG_OK_ON_BOTH |
71 CTL_CMD_FLAG_OK_ON_STOPPED |
72 CTL_CMD_FLAG_OK_ON_INOPERABLE |
73 CTL_CMD_FLAG_OK_ON_OFFLINE |
74 CTL_CMD_FLAG_OK_ON_SECONDARY |
76 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
78 10, { 0x00, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
80 /* 01 READ RESERVATION */
81 {ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
82 CTL_CMD_FLAG_OK_ON_BOTH |
83 CTL_CMD_FLAG_OK_ON_STOPPED |
84 CTL_CMD_FLAG_OK_ON_INOPERABLE |
85 CTL_CMD_FLAG_OK_ON_OFFLINE |
86 CTL_CMD_FLAG_OK_ON_SECONDARY |
88 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
90 10, { 0x01, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
92 /* 02 REPORT CAPABILITIES */
93 {ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
94 CTL_CMD_FLAG_OK_ON_BOTH |
95 CTL_CMD_FLAG_OK_ON_STOPPED |
96 CTL_CMD_FLAG_OK_ON_INOPERABLE |
97 CTL_CMD_FLAG_OK_ON_OFFLINE |
98 CTL_CMD_FLAG_OK_ON_SECONDARY |
100 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
102 10, { 0x02, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
104 /* 03 READ FULL STATUS */
105 {ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV |
106 CTL_CMD_FLAG_OK_ON_BOTH |
107 CTL_CMD_FLAG_OK_ON_STOPPED |
108 CTL_CMD_FLAG_OK_ON_INOPERABLE |
109 CTL_CMD_FLAG_OK_ON_OFFLINE |
110 CTL_CMD_FLAG_OK_ON_SECONDARY |
112 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
114 10, { 0x03, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
119 /* 5F PERSISTENT RESERVE OUT */
120 const struct ctl_cmd_entry ctl_cmd_table_5f[32] =
123 {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
124 CTL_CMD_FLAG_OK_ON_BOTH |
125 CTL_CMD_FLAG_OK_ON_STOPPED |
126 CTL_CMD_FLAG_OK_ON_INOPERABLE |
127 CTL_CMD_FLAG_OK_ON_OFFLINE |
128 CTL_CMD_FLAG_OK_ON_SECONDARY |
130 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
132 10, { 0x00, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
135 {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
136 CTL_CMD_FLAG_OK_ON_BOTH |
137 CTL_CMD_FLAG_OK_ON_STOPPED |
138 CTL_CMD_FLAG_OK_ON_INOPERABLE |
139 CTL_CMD_FLAG_OK_ON_OFFLINE |
140 CTL_CMD_FLAG_OK_ON_SECONDARY |
142 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
144 10, { 0x01, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
147 {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
148 CTL_CMD_FLAG_OK_ON_BOTH |
149 CTL_CMD_FLAG_OK_ON_STOPPED |
150 CTL_CMD_FLAG_OK_ON_INOPERABLE |
151 CTL_CMD_FLAG_OK_ON_OFFLINE |
152 CTL_CMD_FLAG_OK_ON_SECONDARY |
154 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
156 10, { 0x02, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
159 {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
160 CTL_CMD_FLAG_OK_ON_BOTH |
161 CTL_CMD_FLAG_OK_ON_STOPPED |
162 CTL_CMD_FLAG_OK_ON_INOPERABLE |
163 CTL_CMD_FLAG_OK_ON_OFFLINE |
164 CTL_CMD_FLAG_OK_ON_SECONDARY |
166 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
168 10, { 0x03, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
171 {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
172 CTL_CMD_FLAG_OK_ON_BOTH |
173 CTL_CMD_FLAG_OK_ON_STOPPED |
174 CTL_CMD_FLAG_OK_ON_INOPERABLE |
175 CTL_CMD_FLAG_OK_ON_OFFLINE |
176 CTL_CMD_FLAG_OK_ON_SECONDARY |
178 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
180 10, { 0x04, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
182 /* 05 PREEMPT AND ABORT */
183 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
185 /* 06 REGISTER AND IGNORE EXISTING KEY */
186 {ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
187 CTL_CMD_FLAG_OK_ON_BOTH |
188 CTL_CMD_FLAG_OK_ON_STOPPED |
189 CTL_CMD_FLAG_OK_ON_INOPERABLE |
190 CTL_CMD_FLAG_OK_ON_OFFLINE |
191 CTL_CMD_FLAG_OK_ON_SECONDARY |
193 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
195 10, { 0x06, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}},
197 /* 07 REGISTER AND MOVE */
198 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
203 /* 83 EXTENDED COPY */
204 const struct ctl_cmd_entry ctl_cmd_table_83[32] =
206 /* 00 EXTENDED COPY (LID1) */
207 {ctl_extended_copy_lid1, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
210 16, { 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
212 /* 01 EXTENDED COPY (LID4) */
213 {ctl_extended_copy_lid4, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
216 16, { 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
219 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
222 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
225 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
228 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
231 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
234 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
237 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
240 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
243 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
246 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
249 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
252 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
255 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
258 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
260 /* 10 POPULATE TOKEN */
261 {ctl_populate_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
263 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
265 16, { 0x10, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
266 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
268 /* 11 WRITE USING TOKEN */
269 {ctl_write_using_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
272 16, { 0x11, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff,
273 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
276 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
279 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
282 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
285 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
288 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
291 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
294 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
297 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
300 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
303 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
305 /* 1C COPY OPERATION ABORT */
306 {ctl_copy_operation_abort, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH |
309 16, { 0x1c, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
312 /* 84 RECEIVE COPY STATUS */
313 const struct ctl_cmd_entry ctl_cmd_table_84[32] =
315 /* 00 RECEIVE COPY STATUS (LID1) */
316 {ctl_receive_copy_status_lid1, CTL_SERIDX_RD_CAP,
317 CTL_CMD_FLAG_OK_ON_BOTH |
319 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
321 16, {0x00, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
323 /* 01 RECEIVE COPY DATA (LID1) */
324 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
327 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
329 /* 03 RECEIVE COPY OPERATING PARAMETERS */
330 {ctl_receive_copy_operating_parameters, CTL_SERIDX_RD_CAP,
331 CTL_CMD_FLAG_OK_ON_BOTH |
332 CTL_CMD_FLAG_OK_ON_STOPPED |
333 CTL_CMD_FLAG_OK_ON_INOPERABLE |
334 CTL_CMD_FLAG_OK_ON_SECONDARY |
336 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
338 16, {0x03, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
340 /* 04 RECEIVE COPY FAILURE DETAILS (LID1) */
341 {ctl_receive_copy_failure_details, CTL_SERIDX_RD_CAP,
342 CTL_CMD_FLAG_OK_ON_BOTH |
344 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
346 16, {0x04, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
348 /* 05 RECEIVE COPY STATUS (LID4) */
349 {ctl_receive_copy_status_lid4, CTL_SERIDX_RD_CAP,
350 CTL_CMD_FLAG_OK_ON_BOTH |
352 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
354 16, {0x05, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
356 /* 06 RECEIVE COPY DATA (LID4)*/
357 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
359 /* 07 RECEIVE ROD TOKEN INFORMATION */
360 {ctl_receive_rod_token_information, CTL_SERIDX_RD_CAP,
361 CTL_CMD_FLAG_OK_ON_BOTH |
363 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
365 16, {0x07, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
367 /* 08 REPORT ALL ROD TOKENS */
368 {ctl_report_all_rod_tokens, CTL_SERIDX_RD_CAP,
369 CTL_CMD_FLAG_OK_ON_BOTH |
371 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
373 16, {0x08, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
376 /* 9E SERVICE ACTION IN(16) */
377 const struct ctl_cmd_entry ctl_cmd_table_9e[32] =
380 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
383 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
386 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
389 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
392 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
395 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
398 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
401 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
404 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
407 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
410 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
413 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
416 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
419 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
422 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
425 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
428 {ctl_read_capacity_16, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN |
429 CTL_CMD_FLAG_OK_ON_STOPPED |
430 CTL_CMD_FLAG_OK_ON_INOPERABLE |
431 CTL_CMD_FLAG_OK_ON_SECONDARY |
433 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
435 16, {0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
440 /* A3 MAINTENANCE IN */
441 const struct ctl_cmd_entry ctl_cmd_table_a3[32] =
444 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
447 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
450 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
453 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
456 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
459 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
462 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
465 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
468 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
471 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
473 /* 0A REPORT TARGET PORT GROUPS */
474 {ctl_report_tagret_port_groups, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
475 CTL_CMD_FLAG_OK_ON_STOPPED |
476 CTL_CMD_FLAG_OK_ON_INOPERABLE |
477 CTL_CMD_FLAG_OK_ON_OFFLINE |
478 CTL_CMD_FLAG_OK_ON_SECONDARY |
480 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
482 12, {0x0a, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
485 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
487 /* 0C REPORT SUPPORTED_OPCODES */
488 {ctl_report_supported_opcodes, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
489 CTL_CMD_FLAG_OK_ON_STOPPED |
490 CTL_CMD_FLAG_OK_ON_INOPERABLE |
491 CTL_CMD_FLAG_OK_ON_OFFLINE |
492 CTL_CMD_FLAG_OK_ON_SECONDARY |
494 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
496 12, {0x0c, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
498 /* 0D REPORT SUPPORTED_TASK MANAGEMENT FUNCTIONS */
499 {ctl_report_supported_tmf, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
500 CTL_CMD_FLAG_OK_ON_STOPPED |
501 CTL_CMD_FLAG_OK_ON_INOPERABLE |
502 CTL_CMD_FLAG_OK_ON_OFFLINE |
503 CTL_CMD_FLAG_OK_ON_SECONDARY |
505 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
507 12, {0x0d, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
510 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
512 /* 0F REPORT TIMESTAMP */
513 {ctl_report_timestamp, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH |
514 CTL_CMD_FLAG_OK_ON_STOPPED |
515 CTL_CMD_FLAG_OK_ON_INOPERABLE |
516 CTL_CMD_FLAG_OK_ON_OFFLINE |
517 CTL_CMD_FLAG_OK_ON_SECONDARY |
519 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
521 12, {0x0f, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
526 const struct ctl_cmd_entry ctl_cmd_table[256] =
528 /* 00 TEST UNIT READY */
529 {ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH |
531 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
532 CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}},
535 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
538 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
540 /* 03 REQUEST SENSE */
541 {ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN |
542 CTL_CMD_FLAG_OK_ON_ALL_LUNS |
543 CTL_CMD_FLAG_ALLOW_ON_RESV |
544 CTL_CMD_FLAG_NO_SENSE |
545 CTL_CMD_FLAG_OK_ON_STOPPED |
546 CTL_CMD_FLAG_OK_ON_INOPERABLE |
547 CTL_CMD_FLAG_OK_ON_OFFLINE |
548 CTL_CMD_FLAG_OK_ON_SECONDARY |
549 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
550 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}},
553 {ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN |
554 CTL_CMD_FLAG_OK_ON_INOPERABLE |
556 CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}},
558 /* 05 READ BLOCK LIMITS */
559 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
562 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
564 /* 07 REASSIGN BLOCKS */
565 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
568 {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
570 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
571 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
574 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
577 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
579 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}},
582 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
585 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
588 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
591 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
593 /* 0F READ REVERSE(6) */
594 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
596 /* 10 WRITE FILEMARKS(6) */
597 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
600 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
603 {ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
604 CTL_CMD_FLAG_ALLOW_ON_RESV |
605 CTL_CMD_FLAG_NO_SENSE |
606 CTL_CMD_FLAG_OK_ON_STOPPED |
607 CTL_CMD_FLAG_OK_ON_INOPERABLE |
608 CTL_CMD_FLAG_OK_ON_OFFLINE |
609 CTL_CMD_FLAG_OK_ON_SECONDARY |
611 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
612 CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}},
615 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
617 /* 14 RECOVER BUFFERED DATA */
618 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
620 /* 15 MODE SELECT(6) */
621 {ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
622 CTL_CMD_FLAG_OK_ON_STOPPED |
623 CTL_CMD_FLAG_OK_ON_INOPERABLE |
624 CTL_CMD_FLAG_OK_ON_OFFLINE |
625 CTL_CMD_FLAG_OK_ON_SECONDARY |
627 CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}},
630 {ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
631 CTL_CMD_FLAG_OK_ON_BOTH |
632 CTL_CMD_FLAG_OK_ON_STOPPED |
633 CTL_CMD_FLAG_OK_ON_INOPERABLE |
634 CTL_CMD_FLAG_OK_ON_OFFLINE |
635 CTL_CMD_FLAG_OK_ON_SECONDARY |
637 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
640 {ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
641 CTL_CMD_FLAG_OK_ON_BOTH |
642 CTL_CMD_FLAG_OK_ON_STOPPED |
643 CTL_CMD_FLAG_OK_ON_INOPERABLE |
644 CTL_CMD_FLAG_OK_ON_OFFLINE |
645 CTL_CMD_FLAG_OK_ON_SECONDARY |
647 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}},
650 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
653 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
655 /* 1A MODE SENSE(6) */
656 {ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
657 CTL_CMD_FLAG_OK_ON_STOPPED |
658 CTL_CMD_FLAG_OK_ON_INOPERABLE |
659 CTL_CMD_FLAG_OK_ON_OFFLINE |
660 CTL_CMD_FLAG_OK_ON_SECONDARY |
662 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
663 CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0xff, 0xff, 0x07}},
665 /* 1B START STOP UNIT */
666 {ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
667 CTL_CMD_FLAG_OK_ON_STOPPED |
668 CTL_CMD_FLAG_OK_ON_INOPERABLE |
669 CTL_CMD_FLAG_OK_ON_OFFLINE |
671 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
672 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}},
674 /* 1C RECEIVE DIAGNOSTIC RESULTS */
675 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
677 /* 1D SEND DIAGNOSTIC */
678 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
680 /* 1E PREVENT ALLOW MEDIUM REMOVAL */
681 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
684 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
687 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
690 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
693 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
696 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
699 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
701 /* 25 READ CAPACITY(10) */
702 {ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN|
703 CTL_CMD_FLAG_OK_ON_STOPPED |
704 CTL_CMD_FLAG_OK_ON_INOPERABLE |
705 CTL_CMD_FLAG_OK_ON_SECONDARY |
707 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
708 CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}},
711 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
714 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
717 {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
719 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
720 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
721 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
723 /* 29 READ GENERATION */
724 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
727 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
728 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
729 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
732 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
735 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
737 /* 2D READ UPDATED BLOCK */
738 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
740 /* 2E WRITE AND VERIFY(10) */
741 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
742 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
743 10, {0x12, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
746 {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
748 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
749 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
750 10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
752 /* 30 SEARCH DATA HIGH(10) */
753 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
755 /* 31 SEARCH DATA EQUAL(10) */
756 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
758 /* 32 SEARCH DATA LOW(10) */
759 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
761 /* 33 SET LIMITS(10) */
762 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
764 /* 34 PRE-FETCH(10) */
765 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
767 /* 35 SYNCHRONIZE CACHE(10) */
768 {ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
771 10, {0, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
773 /* 36 LOCK UNLOCK CACHE(10) */
774 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
776 /* 37 READ DEFECT DATA(10) */
777 {ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_SLUN |
779 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
781 10, {0, 0x1f, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
784 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
787 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
789 /* 3A COPY AND VERIFY */
790 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
792 /* 3B WRITE BUFFER */
793 {ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
796 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
799 {ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
801 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
803 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}},
805 /* 3D UPDATE BLOCK */
806 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
809 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
812 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
814 /* 40 CHANGE DEFINITION */
815 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
817 /* 41 WRITE SAME(10) */
818 {ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
820 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
821 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}},
823 /* 42 READ SUB-CHANNEL / UNMAP */
824 {ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT,
826 10, {1, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}},
828 /* 43 READ TOC/PMA/ATIP */
829 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
831 /* 44 REPORT DENSITY SUPPORT */
832 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
834 /* 45 PLAY AUDIO(10) */
835 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
837 /* 46 GET CONFIGURATION */
838 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
840 /* 47 PLAY AUDIO MSF */
841 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
843 /* 48 PLAY AUDIO TRACK INDEX */
844 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
846 /* 49 PLAY TRACK RELATIVE(10) */
847 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
849 /* 4A GET EVENT STATUS NOTIFICATION */
850 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
852 /* 4B PAUSE/RESUME */
853 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
856 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
859 {ctl_log_sense, CTL_SERIDX_LOG_SNS, CTL_CMD_FLAG_OK_ON_SLUN |
861 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
862 CTL_LUN_PAT_NONE, 10, {0, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0x07} },
864 /* 4E STOP PLAY/SCAN */
865 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
868 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
871 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
874 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
877 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
879 /* 53 RESERVE TRACK */
880 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
882 /* 54 SEND OPC INFORMATION */
883 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
885 /* 55 MODE SELECT(10) */
886 {ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH |
887 CTL_CMD_FLAG_OK_ON_STOPPED |
888 CTL_CMD_FLAG_OK_ON_INOPERABLE |
889 CTL_CMD_FLAG_OK_ON_OFFLINE |
890 CTL_CMD_FLAG_OK_ON_SECONDARY |
892 CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} },
895 {ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
896 CTL_CMD_FLAG_OK_ON_BOTH |
897 CTL_CMD_FLAG_OK_ON_STOPPED |
898 CTL_CMD_FLAG_OK_ON_INOPERABLE |
899 CTL_CMD_FLAG_OK_ON_OFFLINE |
900 CTL_CMD_FLAG_OK_ON_SECONDARY |
902 CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
905 {ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV |
906 CTL_CMD_FLAG_OK_ON_BOTH |
907 CTL_CMD_FLAG_OK_ON_STOPPED |
908 CTL_CMD_FLAG_OK_ON_INOPERABLE |
909 CTL_CMD_FLAG_OK_ON_OFFLINE |
910 CTL_CMD_FLAG_OK_ON_SECONDARY |
912 CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
914 /* 58 REPAIR TRACK */
915 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
917 /* 59 READ MASTER CUE */
918 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
920 /* 5A MODE SENSE(10) */
921 {ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH |
922 CTL_CMD_FLAG_OK_ON_STOPPED |
923 CTL_CMD_FLAG_OK_ON_INOPERABLE |
924 CTL_CMD_FLAG_OK_ON_OFFLINE |
925 CTL_CMD_FLAG_OK_ON_SECONDARY |
927 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
928 CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} },
930 /* 5B CLOSE TRACK/SESSION */
931 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
933 /* 5C READ BUFFER CAPACITY */
934 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
936 /* 5D SEND CUE SHEET */
937 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
939 /* 5E PERSISTENT RESERVE IN */
940 {__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
943 /* 5F PERSISTENT RESERVE OUT */
944 {__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
948 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
951 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
954 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
957 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
960 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
963 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
966 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
969 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
972 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
975 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
978 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
981 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
984 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
987 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
990 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
993 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
996 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
999 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1002 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1005 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1008 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1011 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1014 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1017 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1020 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1023 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1026 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1029 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1032 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1035 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1038 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1041 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1043 /* 80 XDWRITE EXTENDED(16) */
1044 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1046 /* 81 REBUILD(16) */
1047 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1049 /* 82 REGENERATE(16) */
1050 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1052 /* 83 EXTENDED COPY */
1053 {__DECONST(ctl_opfunc *, ctl_cmd_table_83), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1056 /* 84 RECEIVE COPY RESULTS */
1057 {__DECONST(ctl_opfunc *, ctl_cmd_table_84), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1061 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1063 /* 86 ACCESS CONTROL IN */
1064 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1066 /* 87 ACCESS CONTROL OUT */
1067 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1070 {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
1071 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1072 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1073 16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1074 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1076 /* 89 COMPARE AND WRITE */
1077 {ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1078 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1079 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1080 0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}},
1083 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1084 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1085 16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1086 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1089 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1091 /* 8C READ ATTRIBUTE */
1092 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1094 /* 8D WRITE ATTRIBUTE */
1095 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1097 /* 8E WRITE AND VERIFY(16) */
1098 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1099 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1100 16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1101 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1104 {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
1106 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1107 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1108 16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1109 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1111 /* 90 PRE-FETCH(16) */
1112 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1114 /* 91 SYNCHRONIZE CACHE(16) */
1115 {ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN |
1118 16, {0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1119 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1121 /* 92 LOCK UNLOCK CACHE(16) */
1122 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1124 /* 93 WRITE SAME(16) */
1125 {ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN |
1127 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1128 16, {0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1129 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1132 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1135 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1138 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1141 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1144 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1147 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1150 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1153 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1155 /* 9C WRITE ATOMIC (16) */
1156 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1157 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1158 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1159 0xff, 0xff, 0, 0, 0xff, 0xff, 0, 0x07}},
1162 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1164 /* 9E SERVICE ACTION IN(16) */
1165 {__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1168 /* 9F SERVICE ACTION OUT(16) */
1169 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1171 /* A0 REPORT LUNS */
1172 {ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS |
1173 CTL_CMD_FLAG_ALLOW_ON_RESV |
1174 CTL_CMD_FLAG_NO_SENSE |
1175 CTL_CMD_FLAG_OK_ON_STOPPED |
1176 CTL_CMD_FLAG_OK_ON_INOPERABLE |
1177 CTL_CMD_FLAG_OK_ON_OFFLINE |
1178 CTL_CMD_FLAG_OK_ON_SECONDARY |
1180 CTL_CMD_FLAG_ALLOW_ON_PR_RESV,
1182 12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1185 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1188 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1190 /* A3 MAINTENANCE IN */
1191 {__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5,
1194 /* A4 MAINTENANCE OUT */
1195 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1197 /* A5 MOVE MEDIUM */
1198 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1200 /* A6 EXCHANGE MEDIUM */
1201 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1203 /* A7 MOVE MEDIUM ATTACHED */
1204 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1207 {ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN |
1208 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1209 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1210 12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1212 /* A9 PLAY TRACK RELATIVE(12) */
1213 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1216 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1217 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1218 12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1220 /* AB SERVICE ACTION IN(12) */
1221 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1224 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1226 /* AD READ DVD STRUCTURE */
1227 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1229 /* AE WRITE AND VERIFY(12) */
1230 {ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT,
1231 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE,
1232 12, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1235 {ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN |
1237 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1238 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE,
1239 12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1241 /* B0 SEARCH DATA HIGH(12) */
1242 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1244 /* B1 SEARCH DATA EQUAL(12) */
1245 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1247 /* B2 SEARCH DATA LOW(12) */
1248 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1250 /* B3 SET LIMITS(12) */
1251 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1253 /* B4 READ ELEMENT STATUS ATTACHED */
1254 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1256 /* B5 REQUEST VOLUME ELEMENT ADDRESS */
1257 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1259 /* B6 SEND VOLUME TAG */
1260 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1262 /* B7 READ DEFECT DATA(12) */
1263 {ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_SLUN |
1265 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV,
1267 12, {0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}},
1269 /* B8 READ ELEMENT STATUS */
1270 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1272 /* B9 READ CD MSF */
1273 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1275 /* BA REDUNDANCY GROUP IN */
1276 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1278 /* BB REDUNDANCY GROUP OUT */
1279 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1282 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1285 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1287 /* BE VOLUME SET IN */
1288 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1290 /* BF VOLUME SET OUT */
1291 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1293 /* C0 - ISC_SEND_MSG_SHORT */
1294 //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1295 {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE,
1297 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1298 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1300 /* C1 - ISC_SEND_MSG */
1301 //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1302 {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1304 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1305 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1307 /* C2 - ISC_WRITE */
1308 //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1309 {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT,
1311 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1312 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1315 //{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE},
1316 {ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN,
1318 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1319 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}},
1322 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1325 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1328 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1331 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1334 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1337 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1340 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1343 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1346 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1349 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1352 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1355 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1358 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1361 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1364 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1367 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1370 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1373 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1376 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1379 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1382 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1385 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1388 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1391 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1394 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1397 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1400 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1403 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1406 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1409 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1412 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1415 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1418 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1421 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1424 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1427 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1430 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1433 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1436 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1439 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1442 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1445 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1448 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1451 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1454 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1457 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1460 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1463 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1466 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1469 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1472 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1475 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1478 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1481 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1484 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1487 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1490 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1493 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1496 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE},
1499 {NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}