ctl_cmd_table.c revision 311433
1/*- 2 * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp. 3 * Copyright (c) 2014-2015 Alexander Motin <mav@FreeBSD.org> 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions, and the following disclaimer, 11 * without modification. 12 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 13 * substantially similar to the "NO WARRANTY" disclaimer below 14 * ("Disclaimer") and any redistribution must be conditioned upon 15 * including a substantially similar Disclaimer requirement for further 16 * binary redistribution. 17 * 18 * NO WARRANTY 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 22 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 27 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 28 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGES. 30 * 31 * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $ 32 * $FreeBSD: stable/10/sys/cam/ctl/ctl_cmd_table.c 311433 2017-01-05 11:50:01Z mav $ 33 */ 34/* 35 * CAM Target Layer command table. 36 * 37 * Author: Ken Merry <ken@FreeBSD.org>, Kim Le 38 */ 39 40#include <sys/cdefs.h> 41#include <sys/param.h> 42#include <sys/systm.h> 43#include <sys/kernel.h> 44#include <sys/types.h> 45#include <sys/malloc.h> 46#include <sys/condvar.h> 47#include <sys/queue.h> 48#include <sys/sysctl.h> 49 50#include <cam/scsi/scsi_all.h> 51#include <cam/scsi/scsi_da.h> 52#include <cam/ctl/ctl_io.h> 53#include <cam/ctl/ctl.h> 54#include <cam/ctl/ctl_frontend.h> 55#include <cam/ctl/ctl_backend.h> 56#include <cam/ctl/ctl_ioctl.h> 57#include <cam/ctl/ctl_ha.h> 58#include <cam/ctl/ctl_private.h> 59 60/* 61 * Whenever support for a new command is added, it should be added to these 62 * tables. 63 */ 64 65/* 3B WRITE BUFFER */ 66const struct ctl_cmd_entry ctl_cmd_table_3b[32] = 67{ 68/* 00 WRITE BUFFER HDR DATA */ 69{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 70 71/* 01 WRITE BUFFER VENDOR */ 72{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 73 74/* 02 WRITE BUFFER DATA */ 75{ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 76 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 77 CTL_CMD_FLAG_OK_ON_STANDBY | 78 CTL_FLAG_DATA_OUT, 79 CTL_LUN_PAT_NONE, 80 10, {0x02, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}}, 81 82/* 03 WRITE BUFFER DESCR */ 83{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 84 85/* 04 WRITE BUFFER DOWNLOAD */ 86{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 87 88/* 05 WRITE BUFFER DOWNLOAD SAVE */ 89{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 90 91/* 06 */ 92{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 93 94/* 07 */ 95{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 96 97/* 08 */ 98{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 99 100/* 09 */ 101{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 102 103/* 0A WRITE BUFFER ECHO */ 104{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 105 106/* 0B WRITE BUFFER ECHO DESCRIPTOR */ 107{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 108 109/* 0C */ 110{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 111 112/* 0D */ 113{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 114 115/* 0E */ 116{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 117 118/* 0F */ 119{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 120 121/* 10 */ 122{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 123 124/* 11 */ 125{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 126 127/* 12 */ 128{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 129 130/* 13 */ 131{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 132 133/* 14 */ 134{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 135 136/* 15 */ 137{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 138 139/* 16 */ 140{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 141 142/* 17 */ 143{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 144 145/* 18 */ 146{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 147 148/* 19 */ 149{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 150 151/* 1A */ 152{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 153 154/* 1B */ 155{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 156 157/* 1C WRITE BUFFER ERROR HISTORY */ 158{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 159 160/* 1d-1f */ 161}; 162 163/* 3C READ BUFFER(10) */ 164const struct ctl_cmd_entry ctl_cmd_table_3c[32] = 165{ 166/* 00 READ BUFFER(10) HDR DATA */ 167{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 168 169/* 01 READ BUFFER(10) VENDOR */ 170{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 171 172/* 02 READ BUFFER(10) DATA */ 173{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 174 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 175 CTL_CMD_FLAG_OK_ON_STANDBY | 176 CTL_FLAG_DATA_IN | 177 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 178 CTL_LUN_PAT_NONE, 179 10, {0x02, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}}, 180 181/* 03 READ BUFFER(10) DESCR */ 182{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 183 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 184 CTL_CMD_FLAG_OK_ON_STANDBY | 185 CTL_FLAG_DATA_IN | 186 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 187 CTL_LUN_PAT_NONE, 188 10, {0x03, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}}, 189 190/* 04 */ 191{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 192 193/* 05 */ 194{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 195 196/* 06 */ 197{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 198 199/* 07 */ 200{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 201 202/* 08 */ 203{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 204 205/* 09 */ 206{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 207 208/* 0A READ BUFFER(10) ECHO */ 209{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 210 211/* 0B READ BUFFER(10) ECHO DESCRIPTOR */ 212{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 213 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 214 CTL_CMD_FLAG_OK_ON_STANDBY | 215 CTL_FLAG_DATA_IN | 216 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 217 CTL_LUN_PAT_NONE, 218 10, {0x0b, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}}, 219 220/* 0C */ 221{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 222 223/* 0D */ 224{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 225 226/* 0E */ 227{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 228 229/* 0F */ 230{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 231 232/* 10 */ 233{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 234 235/* 11 */ 236{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 237 238/* 12 */ 239{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 240 241/* 13 */ 242{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 243 244/* 14 */ 245{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 246 247/* 15 */ 248{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 249 250/* 16 */ 251{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 252 253/* 17 */ 254{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 255 256/* 18 */ 257{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 258 259/* 19 */ 260{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 261 262/* 1A */ 263{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 264 265/* 1B */ 266{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 267 268/* 1C READ BUFFER(10) ERROR HISTORY */ 269{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 270 271/* 1d-1f */ 272}; 273 274/* 5E PERSISTENT RESERVE IN */ 275const struct ctl_cmd_entry ctl_cmd_table_5e[32] = 276{ 277/* 00 READ KEYS */ 278{ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 279 CTL_CMD_FLAG_OK_ON_BOTH | 280 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 281 CTL_CMD_FLAG_OK_ON_STANDBY | 282 CTL_FLAG_DATA_IN | 283 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 284 CTL_LUN_PAT_NONE, 285 10, { 0x00, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 286 287/* 01 READ RESERVATION */ 288{ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 289 CTL_CMD_FLAG_OK_ON_BOTH | 290 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 291 CTL_CMD_FLAG_OK_ON_STANDBY | 292 CTL_FLAG_DATA_IN | 293 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 294 CTL_LUN_PAT_NONE, 295 10, { 0x01, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 296 297/* 02 REPORT CAPABILITIES */ 298{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV | 299 CTL_CMD_FLAG_OK_ON_BOTH | 300 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 301 CTL_CMD_FLAG_OK_ON_STANDBY | 302 CTL_FLAG_DATA_IN | 303 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 304 CTL_LUN_PAT_NONE, 305 10, { 0x02, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 306 307/* 03 READ FULL STATUS */ 308{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV | 309 CTL_CMD_FLAG_OK_ON_BOTH | 310 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 311 CTL_CMD_FLAG_OK_ON_STANDBY | 312 CTL_FLAG_DATA_IN | 313 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 314 CTL_LUN_PAT_NONE, 315 10, { 0x03, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 316 317/* 04-1f */ 318}; 319 320/* 5F PERSISTENT RESERVE OUT */ 321const struct ctl_cmd_entry ctl_cmd_table_5f[32] = 322{ 323/* 00 REGISTER */ 324{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 325 CTL_CMD_FLAG_OK_ON_BOTH | 326 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 327 CTL_CMD_FLAG_OK_ON_STANDBY | 328 CTL_FLAG_DATA_OUT | 329 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 330 CTL_LUN_PAT_NONE, 331 10, { 0x00, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 332 333/* 01 RESERVE */ 334{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 335 CTL_CMD_FLAG_OK_ON_BOTH | 336 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 337 CTL_CMD_FLAG_OK_ON_STANDBY | 338 CTL_FLAG_DATA_OUT | 339 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 340 CTL_LUN_PAT_NONE, 341 10, { 0x01, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 342 343/* 02 RELEASE */ 344{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 345 CTL_CMD_FLAG_OK_ON_BOTH | 346 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 347 CTL_CMD_FLAG_OK_ON_STANDBY | 348 CTL_FLAG_DATA_OUT | 349 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 350 CTL_LUN_PAT_NONE, 351 10, { 0x02, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 352 353/* 03 CLEAR */ 354{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 355 CTL_CMD_FLAG_OK_ON_BOTH | 356 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 357 CTL_CMD_FLAG_OK_ON_STANDBY | 358 CTL_FLAG_DATA_OUT | 359 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 360 CTL_LUN_PAT_NONE, 361 10, { 0x03, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 362 363/* 04 PREEMPT */ 364{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 365 CTL_CMD_FLAG_OK_ON_BOTH | 366 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 367 CTL_CMD_FLAG_OK_ON_STANDBY | 368 CTL_FLAG_DATA_OUT | 369 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 370 CTL_LUN_PAT_NONE, 371 10, { 0x04, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 372 373/* 05 PREEMPT AND ABORT */ 374{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 375 CTL_CMD_FLAG_OK_ON_BOTH | 376 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 377 CTL_CMD_FLAG_OK_ON_STANDBY | 378 CTL_FLAG_DATA_OUT | 379 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 380 CTL_LUN_PAT_NONE, 381 10, { 0x05, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 382 383/* 06 REGISTER AND IGNORE EXISTING KEY */ 384{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 385 CTL_CMD_FLAG_OK_ON_BOTH | 386 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 387 CTL_CMD_FLAG_OK_ON_STANDBY | 388 CTL_FLAG_DATA_OUT | 389 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 390 CTL_LUN_PAT_NONE, 391 10, { 0x06, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 392 393/* 07 REGISTER AND MOVE */ 394{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 395 396/* 08-1f */ 397}; 398 399/* 83 EXTENDED COPY */ 400const struct ctl_cmd_entry ctl_cmd_table_83[32] = 401{ 402/* 00 EXTENDED COPY (LID1) */ 403{ctl_extended_copy_lid1, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH | 404 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 405 CTL_FLAG_DATA_OUT, 406 CTL_LUN_PAT_NONE, 407 16, { 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 408 409/* 01 EXTENDED COPY (LID4) */ 410{ctl_extended_copy_lid4, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH | 411 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 412 CTL_FLAG_DATA_OUT, 413 CTL_LUN_PAT_NONE, 414 16, { 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 415 416/* 02 */ 417{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 418 419/* 03 */ 420{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 421 422/* 04 */ 423{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 424 425/* 05 */ 426{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 427 428/* 06 */ 429{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 430 431/* 07 */ 432{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 433 434/* 08 */ 435{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 436 437/* 09 */ 438{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 439 440/* 0A */ 441{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 442 443/* 0B */ 444{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 445 446/* 0C */ 447{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 448 449/* 0D */ 450{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 451 452/* 0E */ 453{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 454 455/* 0F */ 456{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 457 458/* 10 POPULATE TOKEN */ 459{ctl_populate_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT | 460 CTL_FLAG_DATA_OUT | 461 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 462 CTL_LUN_PAT_NONE, 463 16, { 0x10, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 464 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 465 466/* 11 WRITE USING TOKEN */ 467{ctl_write_using_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT | 468 CTL_FLAG_DATA_OUT, 469 CTL_LUN_PAT_NONE, 470 16, { 0x11, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 471 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 472 473/* 12 */ 474{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 475 476/* 13 */ 477{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 478 479/* 14 */ 480{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 481 482/* 15 */ 483{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 484 485/* 16 */ 486{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 487 488/* 17 */ 489{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 490 491/* 18 */ 492{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 493 494/* 19 */ 495{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 496 497/* 1A */ 498{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 499 500/* 1B */ 501{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 502 503/* 1C COPY OPERATION ABORT */ 504{ctl_copy_operation_abort, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH | 505 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 506 CTL_FLAG_DATA_NONE, 507 CTL_LUN_PAT_NONE, 508 16, { 0x1c, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x07}}, 509}; 510 511/* 84 RECEIVE COPY STATUS */ 512const struct ctl_cmd_entry ctl_cmd_table_84[32] = 513{ 514/* 00 RECEIVE COPY STATUS (LID1) */ 515{ctl_receive_copy_status_lid1, CTL_SERIDX_RD_CAP, 516 CTL_CMD_FLAG_OK_ON_BOTH | 517 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 518 CTL_FLAG_DATA_IN | 519 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 520 CTL_LUN_PAT_NONE, 521 16, {0x00, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 522 523/* 01 RECEIVE COPY DATA (LID1) */ 524{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 525 526/* 02 */ 527{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 528 529/* 03 RECEIVE COPY OPERATING PARAMETERS */ 530{ctl_receive_copy_operating_parameters, CTL_SERIDX_RD_CAP, 531 CTL_CMD_FLAG_OK_ON_BOTH | 532 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 533 CTL_CMD_FLAG_OK_ON_STANDBY | 534 CTL_FLAG_DATA_IN | 535 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 536 CTL_LUN_PAT_NONE, 537 16, {0x03, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 538 539/* 04 RECEIVE COPY FAILURE DETAILS (LID1) */ 540{ctl_receive_copy_failure_details, CTL_SERIDX_RD_CAP, 541 CTL_CMD_FLAG_OK_ON_BOTH | 542 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 543 CTL_FLAG_DATA_IN | 544 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 545 CTL_LUN_PAT_NONE, 546 16, {0x04, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 547 548/* 05 RECEIVE COPY STATUS (LID4) */ 549{ctl_receive_copy_status_lid4, CTL_SERIDX_RD_CAP, 550 CTL_CMD_FLAG_OK_ON_BOTH | 551 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 552 CTL_FLAG_DATA_IN | 553 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 554 CTL_LUN_PAT_NONE, 555 16, {0x05, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 556 557/* 06 RECEIVE COPY DATA (LID4)*/ 558{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 559 560/* 07 RECEIVE ROD TOKEN INFORMATION */ 561{ctl_receive_rod_token_information, CTL_SERIDX_RD_CAP, 562 CTL_CMD_FLAG_OK_ON_BOTH | 563 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 564 CTL_FLAG_DATA_IN | 565 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 566 CTL_LUN_PAT_NONE, 567 16, {0x07, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 568 569/* 08 REPORT ALL ROD TOKENS */ 570{ctl_report_all_rod_tokens, CTL_SERIDX_RD_CAP, 571 CTL_CMD_FLAG_OK_ON_BOTH | 572 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 573 CTL_FLAG_DATA_IN | 574 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 575 CTL_LUN_PAT_NONE, 576 16, {0x08, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 577}; 578 579/* 9B READ BUFFER(16) */ 580const struct ctl_cmd_entry ctl_cmd_table_9b[32] = 581{ 582/* 00 READ BUFFER(16) HDR DATA */ 583{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 584 585/* 01 READ BUFFER(16) VENDOR */ 586{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 587 588/* 02 READ BUFFER(16) DATA */ 589{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 590 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 591 CTL_CMD_FLAG_OK_ON_STANDBY | 592 CTL_FLAG_DATA_IN, 593 CTL_LUN_PAT_NONE, 594 16, {0x02, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 595 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 596 597/* 03 READ BUFFER(16) DESCR */ 598{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 599 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 600 CTL_CMD_FLAG_OK_ON_STANDBY | 601 CTL_FLAG_DATA_IN, 602 CTL_LUN_PAT_NONE, 603 16, {0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 604 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 605 606/* 04 READ BUFFER(16) */ 607{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 608 609/* 05 READ BUFFER(16) */ 610{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 611 612/* 06 */ 613{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 614 615/* 07 */ 616{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 617 618/* 08 */ 619{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 620 621/* 09 */ 622{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 623 624/* 0A READ BUFFER(16) ECHO */ 625{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 626 627/* 0B READ BUFFER(16) ECHO DESCRIPTOR */ 628{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 629 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 630 CTL_CMD_FLAG_OK_ON_STANDBY | 631 CTL_FLAG_DATA_IN, 632 CTL_LUN_PAT_NONE, 633 16, {0x0b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 634 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 635 636/* 0C */ 637{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 638 639/* 0D */ 640{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 641 642/* 0E */ 643{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 644 645/* 0F */ 646{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 647 648/* 10 */ 649{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 650 651/* 11 */ 652{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 653 654/* 12 */ 655{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 656 657/* 13 */ 658{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 659 660/* 14 */ 661{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 662 663/* 15 */ 664{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 665 666/* 16 */ 667{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 668 669/* 17 */ 670{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 671 672/* 18 */ 673{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 674 675/* 19 */ 676{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 677 678/* 1A */ 679{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 680 681/* 1B */ 682{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 683 684/* 1C READ BUFFER(16) ERROR HISTORY */ 685{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 686 687/* 1d-1f */ 688}; 689 690 691/* 9E SERVICE ACTION IN(16) */ 692const struct ctl_cmd_entry ctl_cmd_table_9e[32] = 693{ 694/* 00 */ 695{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 696 697/* 01 */ 698{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 699 700/* 02 */ 701{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 702 703/* 03 */ 704{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 705 706/* 04 */ 707{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 708 709/* 05 */ 710{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 711 712/* 06 */ 713{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 714 715/* 07 */ 716{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 717 718/* 08 */ 719{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 720 721/* 09 */ 722{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 723 724/* 0A */ 725{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 726 727/* 0B */ 728{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 729 730/* 0C */ 731{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 732 733/* 0D */ 734{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 735 736/* 0E */ 737{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 738 739/* 0F */ 740{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 741 742/* 10 READ CAPACITY(16) */ 743{ctl_read_capacity_16, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT | 744 CTL_FLAG_DATA_IN | 745 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 746 CTL_LUN_PAT_READCAP, 747 16, {0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 748 749/* 11 */ 750{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 751 752/* 12 GET LBA STATUS */ 753{ctl_get_lba_status, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | 754 CTL_FLAG_DATA_IN | 755 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 756 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 757 16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 758 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 759 760/* 13-1f */ 761}; 762 763/* A3 MAINTENANCE IN */ 764const struct ctl_cmd_entry ctl_cmd_table_a3[32] = 765{ 766/* 00 */ 767{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 768 769/* 01 */ 770{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 771 772/* 02 */ 773{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 774 775/* 03 */ 776{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 777 778/* 04 */ 779{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 780 781/* 05 */ 782{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 783 784/* 06 */ 785{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 786 787/* 07 */ 788{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 789 790/* 08 */ 791{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 792 793/* 09 */ 794{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 795 796/* 0A REPORT TARGET PORT GROUPS */ 797{ctl_report_tagret_port_groups, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH | 798 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 799 CTL_CMD_FLAG_OK_ON_STANDBY | 800 CTL_CMD_FLAG_OK_ON_UNAVAIL | 801 CTL_FLAG_DATA_IN | 802 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 803 CTL_LUN_PAT_NONE, 804 12, {0xea, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 805 806/* 0B */ 807{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 808 809/* 0C REPORT SUPPORTED_OPCODES */ 810{ctl_report_supported_opcodes, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH | 811 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 812 CTL_CMD_FLAG_OK_ON_STANDBY | 813 CTL_CMD_FLAG_OK_ON_UNAVAIL | 814 CTL_FLAG_DATA_IN | 815 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 816 CTL_LUN_PAT_NONE, 817 12, {0x0c, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 818 819/* 0D REPORT SUPPORTED_TASK MANAGEMENT FUNCTIONS */ 820{ctl_report_supported_tmf, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH | 821 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 822 CTL_CMD_FLAG_OK_ON_STANDBY | 823 CTL_CMD_FLAG_OK_ON_UNAVAIL | 824 CTL_FLAG_DATA_IN | 825 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 826 CTL_LUN_PAT_NONE, 827 12, {0x0d, 0x80, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 828 829/* 0E */ 830{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 831 832/* 0F REPORT TIMESTAMP */ 833{ctl_report_timestamp, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH | 834 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 835 CTL_CMD_FLAG_OK_ON_STANDBY | 836 CTL_CMD_FLAG_OK_ON_UNAVAIL | 837 CTL_FLAG_DATA_IN | 838 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 839 CTL_LUN_PAT_NONE, 840 12, {0x0f, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 841 842/* 10-1f */ 843}; 844 845const struct ctl_cmd_entry ctl_cmd_table[256] = 846{ 847/* 00 TEST UNIT READY */ 848{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH | 849 CTL_FLAG_DATA_NONE | 850 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 851 CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}}, 852 853/* 01 REWIND */ 854{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 855 856/* 02 */ 857{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 858 859/* 03 REQUEST SENSE */ 860{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN | 861 CTL_CMD_FLAG_OK_ON_NO_LUN | 862 CTL_CMD_FLAG_OK_ON_BOTH | 863 CTL_CMD_FLAG_ALLOW_ON_RESV | 864 CTL_CMD_FLAG_NO_SENSE | 865 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 866 CTL_CMD_FLAG_OK_ON_STANDBY | 867 CTL_CMD_FLAG_OK_ON_UNAVAIL | 868 CTL_CMD_FLAG_ALLOW_ON_PR_RESV | 869 CTL_CMD_FLAG_RUN_HERE, 870 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}}, 871 872/* 04 FORMAT UNIT */ 873{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_DIRECT | 874 CTL_FLAG_DATA_OUT, 875 CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}}, 876 877/* 05 READ BLOCK LIMITS */ 878{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 879 880/* 06 */ 881{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 882 883/* 07 REASSIGN BLOCKS */ 884{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 885 886/* 08 READ(6) */ 887{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | 888 CTL_FLAG_DATA_IN | 889 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 890 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}}, 891 892/* 09 */ 893{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 894 895/* 0A WRITE(6) */ 896{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT | 897 CTL_FLAG_DATA_OUT, 898 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}}, 899 900/* 0B SEEK(6) */ 901{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 902 903/* 0C */ 904{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 905 906/* 0D */ 907{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 908 909/* 0E */ 910{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 911 912/* 0F READ REVERSE(6) */ 913{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 914 915/* 10 WRITE FILEMARKS(6) */ 916{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 917 918/* 11 SPACE(6) */ 919{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 920 921/* 12 INQUIRY */ 922{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_NO_LUN | 923 CTL_CMD_FLAG_OK_ON_BOTH | 924 CTL_CMD_FLAG_ALLOW_ON_RESV | 925 CTL_CMD_FLAG_NO_SENSE | 926 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 927 CTL_CMD_FLAG_OK_ON_STANDBY | 928 CTL_CMD_FLAG_OK_ON_UNAVAIL | 929 CTL_FLAG_DATA_IN | 930 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 931 CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}}, 932 933/* 13 */ 934{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 935 936/* 14 RECOVER BUFFERED DATA */ 937{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 938 939/* 15 MODE SELECT(6) */ 940{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 941 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 942 CTL_CMD_FLAG_OK_ON_STANDBY | 943 CTL_FLAG_DATA_OUT, 944 CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}}, 945 946/* 16 RESERVE(6) */ 947{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 948 CTL_CMD_FLAG_OK_ON_BOTH | 949 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 950 CTL_CMD_FLAG_OK_ON_STANDBY | 951 CTL_FLAG_DATA_OUT, 952 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}}, 953 954/* 17 RELEASE(6) */ 955{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 956 CTL_CMD_FLAG_OK_ON_BOTH | 957 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 958 CTL_CMD_FLAG_OK_ON_STANDBY | 959 CTL_FLAG_DATA_NONE, 960 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}}, 961 962/* 18 COPY */ 963{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 964 965/* 19 ERASE(6) */ 966{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 967 968/* 1A MODE SENSE(6) */ 969{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 970 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 971 CTL_CMD_FLAG_OK_ON_STANDBY | 972 CTL_FLAG_DATA_IN | 973 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 974 CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0xff, 0xff, 0x07}}, 975 976/* 1B START STOP UNIT */ 977{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_DIRECT | 978 CTL_CMD_FLAG_OK_ON_CDROM | 979 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 980 CTL_FLAG_DATA_NONE | 981 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 982 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0x0f, 0xf7, 0x07}}, 983 984/* 1C RECEIVE DIAGNOSTIC RESULTS */ 985{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 986 987/* 1D SEND DIAGNOSTIC */ 988{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 989 990/* 1E PREVENT ALLOW MEDIUM REMOVAL */ 991{ctl_prevent_allow, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_DIRECT | 992 CTL_CMD_FLAG_OK_ON_CDROM | 993 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 994 CTL_FLAG_DATA_NONE, 995 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}}, 996 997/* 1F */ 998{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 999 1000/* 20 */ 1001{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1002 1003/* 21 */ 1004{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1005 1006/* 22 */ 1007{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1008 1009/* 23 */ 1010{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1011 1012/* 24 SET WINDOW */ 1013{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1014 1015/* 25 READ CAPACITY(10) */ 1016{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_DIRECT | 1017 CTL_CMD_FLAG_OK_ON_CDROM | 1018 CTL_FLAG_DATA_IN | 1019 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 1020 CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}}, 1021 1022/* 26 */ 1023{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1024 1025/* 27 */ 1026{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1027 1028/* 28 READ(10) */ 1029{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | 1030 CTL_CMD_FLAG_OK_ON_CDROM | 1031 CTL_FLAG_DATA_IN | 1032 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 1033 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 1034 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 1035 1036/* 29 READ GENERATION */ 1037{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1038 1039/* 2A WRITE(10) */ 1040{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT, 1041 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1042 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 1043 1044/* 2B SEEK(10) */ 1045{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1046 1047/* 2C ERASE(10) */ 1048{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1049 1050/* 2D READ UPDATED BLOCK */ 1051{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1052 1053/* 2E WRITE AND VERIFY(10) */ 1054{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT, 1055 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1056 10, {0x12, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 1057 1058/* 2F VERIFY(10) */ 1059{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | 1060 CTL_FLAG_DATA_OUT | 1061 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 1062 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 1063 10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 1064 1065/* 30 SEARCH DATA HIGH(10) */ 1066{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1067 1068/* 31 SEARCH DATA EQUAL(10) */ 1069{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1070 1071/* 32 SEARCH DATA LOW(10) */ 1072{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1073 1074/* 33 SET LIMITS(10) */ 1075{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1076 1077/* 34 PRE-FETCH(10) */ 1078{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1079 1080/* 35 SYNCHRONIZE CACHE(10) */ 1081{ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_DIRECT | 1082 CTL_FLAG_DATA_NONE, 1083 CTL_LUN_PAT_WRITE, 1084 10, {0x06, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 1085 1086/* 36 LOCK UNLOCK CACHE(10) */ 1087{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1088 1089/* 37 READ DEFECT DATA(10) */ 1090{ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_DIRECT | 1091 CTL_FLAG_DATA_IN | 1092 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 1093 CTL_LUN_PAT_NONE, 1094 10, {0, 0x1f, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 1095 1096/* 38 MEDIUM SCAN */ 1097{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1098 1099/* 39 COMPARE */ 1100{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1101 1102/* 3A COPY AND VERIFY */ 1103{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1104 1105/* 3B WRITE BUFFER */ 1106{__DECONST(ctl_opfunc *, ctl_cmd_table_3b), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1107 CTL_LUN_PAT_NONE}, 1108 1109/* 3C READ BUFFER */ 1110{__DECONST(ctl_opfunc *, ctl_cmd_table_3c), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1111 CTL_LUN_PAT_NONE}, 1112 1113/* 3D UPDATE BLOCK */ 1114{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1115 1116/* 3E READ LONG */ 1117{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1118 1119/* 3F WRITE LONG */ 1120{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1121 1122/* 40 CHANGE DEFINITION */ 1123{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1124 1125/* 41 WRITE SAME(10) */ 1126{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT | 1127 CTL_FLAG_DATA_OUT, 1128 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1129 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 1130 1131/* 42 READ SUB-CHANNEL / UNMAP */ 1132{ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_DIRECT | CTL_FLAG_DATA_OUT, 1133 CTL_LUN_PAT_WRITE, 1134 10, {1, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 1135 1136/* 43 READ TOC/PMA/ATIP */ 1137{ctl_read_toc, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM | 1138 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV | 1139 CTL_FLAG_DATA_IN, 1140 CTL_LUN_PAT_NONE, 1141 10, {0x02, 0x01, 0, 0, 0, 0xff, 0xff, 0xff, 0x07}}, 1142 1143/* 44 REPORT DENSITY SUPPORT */ 1144{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1145 1146/* 45 PLAY AUDIO(10) */ 1147{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1148 1149/* 46 GET CONFIGURATION */ 1150{ctl_get_config, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_CDROM | 1151 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 1152 CTL_CMD_FLAG_ALLOW_ON_PR_RESV | 1153 CTL_FLAG_DATA_IN, 1154 CTL_LUN_PAT_NONE, 1155 10, {0x03, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07}}, 1156 1157/* 47 PLAY AUDIO MSF */ 1158{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1159 1160/* 48 PLAY AUDIO TRACK INDEX */ 1161{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1162 1163/* 49 PLAY TRACK RELATIVE(10) */ 1164{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1165 1166/* 4A GET EVENT STATUS NOTIFICATION */ 1167{ctl_get_event_status, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM | 1168 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 1169 CTL_CMD_FLAG_ALLOW_ON_PR_RESV | 1170 CTL_FLAG_DATA_IN, 1171 CTL_LUN_PAT_NONE, 1172 10, {0x02, 0x01, 0, 0, 0, 0xff, 0xff, 0xff, 0x07}}, 1173 1174/* 4B PAUSE/RESUME */ 1175{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1176 1177/* 4C LOG SELECT */ 1178{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1179 1180/* 4D LOG SENSE */ 1181{ctl_log_sense, CTL_SERIDX_LOG_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 1182 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 1183 CTL_CMD_FLAG_OK_ON_STANDBY | 1184 CTL_FLAG_DATA_IN | 1185 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 1186 CTL_LUN_PAT_NONE, 10, {0, 0xff, 0xff, 0, 0xff, 0xff, 0xff, 0xff, 0x07} }, 1187 1188/* 4E STOP PLAY/SCAN */ 1189{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1190 1191/* 4F */ 1192{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1193 1194/* 50 XDWRITE(10) */ 1195{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1196 1197/* 51 XPWRITE(10) */ 1198{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1199 1200/* 52 XDREAD(10) */ 1201{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1202 1203/* 53 RESERVE TRACK */ 1204{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1205 1206/* 54 SEND OPC INFORMATION */ 1207{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1208 1209/* 55 MODE SELECT(10) */ 1210{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 1211 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 1212 CTL_CMD_FLAG_OK_ON_STANDBY | 1213 CTL_FLAG_DATA_OUT, 1214 CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} }, 1215 1216/* 56 RESERVE(10) */ 1217{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 1218 CTL_CMD_FLAG_OK_ON_BOTH | 1219 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 1220 CTL_CMD_FLAG_OK_ON_STANDBY | 1221 CTL_FLAG_DATA_OUT, 1222 CTL_LUN_PAT_NONE, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07} }, 1223 1224/* 57 RELEASE(10) */ 1225{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 1226 CTL_CMD_FLAG_OK_ON_BOTH | 1227 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 1228 CTL_CMD_FLAG_OK_ON_STANDBY | 1229 CTL_FLAG_DATA_OUT, 1230 CTL_LUN_PAT_NONE, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}}, 1231 1232/* 58 REPAIR TRACK */ 1233{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1234 1235/* 59 READ MASTER CUE */ 1236{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1237 1238/* 5A MODE SENSE(10) */ 1239{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 1240 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 1241 CTL_CMD_FLAG_OK_ON_STANDBY | 1242 CTL_FLAG_DATA_IN | 1243 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 1244 CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} }, 1245 1246/* 5B CLOSE TRACK/SESSION */ 1247{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1248 1249/* 5C READ BUFFER CAPACITY */ 1250{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1251 1252/* 5D SEND CUE SHEET */ 1253{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1254 1255/* 5E PERSISTENT RESERVE IN */ 1256{__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1257 CTL_LUN_PAT_NONE}, 1258 1259/* 5F PERSISTENT RESERVE OUT */ 1260{__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1261 CTL_LUN_PAT_NONE}, 1262 1263/* 60 */ 1264{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1265 1266/* 61 */ 1267{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1268 1269/* 62 */ 1270{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1271 1272/* 63 */ 1273{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1274 1275/* 64 */ 1276{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1277 1278/* 65 */ 1279{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1280 1281/* 66 */ 1282{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1283 1284/* 67 */ 1285{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1286 1287/* 68 */ 1288{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1289 1290/* 69 */ 1291{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1292 1293/* 6A */ 1294{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1295 1296/* 6B */ 1297{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1298 1299/* 6C */ 1300{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1301 1302/* 6D */ 1303{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1304 1305/* 6E */ 1306{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1307 1308/* 6F */ 1309{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1310 1311/* 70 */ 1312{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1313 1314/* 71 */ 1315{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1316 1317/* 72 */ 1318{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1319 1320/* 73 */ 1321{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1322 1323/* 74 */ 1324{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1325 1326/* 75 */ 1327{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1328 1329/* 76 */ 1330{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1331 1332/* 77 */ 1333{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1334 1335/* 78 */ 1336{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1337 1338/* 79 */ 1339{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1340 1341/* 7A */ 1342{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1343 1344/* 7B */ 1345{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1346 1347/* 7C */ 1348{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1349 1350/* 7D */ 1351{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1352 1353/* 7E */ 1354{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1355 1356/* 7F */ 1357{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1358 1359/* 80 XDWRITE EXTENDED(16) */ 1360{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1361 1362/* 81 REBUILD(16) */ 1363{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1364 1365/* 82 REGENERATE(16) */ 1366{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1367 1368/* 83 EXTENDED COPY */ 1369{__DECONST(ctl_opfunc *, ctl_cmd_table_83), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1370 CTL_LUN_PAT_NONE}, 1371 1372/* 84 RECEIVE COPY RESULTS */ 1373{__DECONST(ctl_opfunc *, ctl_cmd_table_84), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1374 CTL_LUN_PAT_NONE}, 1375 1376/* 85 */ 1377{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1378 1379/* 86 ACCESS CONTROL IN */ 1380{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1381 1382/* 87 ACCESS CONTROL OUT */ 1383{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1384 1385/* 88 READ(16) */ 1386{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | CTL_FLAG_DATA_IN | 1387 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 1388 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 1389 16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1390 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1391 1392/* 89 COMPARE AND WRITE */ 1393{ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT, 1394 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1395 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1396 0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}}, 1397 1398/* 8A WRITE(16) */ 1399{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT, 1400 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1401 16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1402 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1403 1404/* 8B */ 1405{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1406 1407/* 8C READ ATTRIBUTE */ 1408{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1409 1410/* 8D WRITE ATTRIBUTE */ 1411{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1412 1413/* 8E WRITE AND VERIFY(16) */ 1414{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT, 1415 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1416 16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1417 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1418 1419/* 8F VERIFY(16) */ 1420{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | 1421 CTL_FLAG_DATA_OUT | 1422 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 1423 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 1424 16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1425 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1426 1427/* 90 PRE-FETCH(16) */ 1428{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1429 1430/* 91 SYNCHRONIZE CACHE(16) */ 1431{ctl_sync_cache, CTL_SERIDX_SYNC, CTL_CMD_FLAG_OK_ON_DIRECT | 1432 CTL_FLAG_DATA_NONE, 1433 CTL_LUN_PAT_WRITE, 1434 16, {0x06, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1435 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1436 1437/* 92 LOCK UNLOCK CACHE(16) */ 1438{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1439 1440/* 93 WRITE SAME(16) */ 1441{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT | 1442 CTL_FLAG_DATA_OUT, 1443 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1444 16, {0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1445 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1446 1447/* 94 */ 1448{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1449 1450/* 95 */ 1451{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1452 1453/* 96 */ 1454{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1455 1456/* 97 */ 1457{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1458 1459/* 98 */ 1460{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1461 1462/* 99 */ 1463{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1464 1465/* 9A */ 1466{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1467 1468/* 9B READ BUFFER(16) */ 1469{__DECONST(ctl_opfunc *, ctl_cmd_table_9b), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1470 CTL_LUN_PAT_NONE}, 1471 1472/* 9C WRITE ATOMIC (16) */ 1473{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT, 1474 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1475 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1476 0xff, 0xff, 0, 0, 0xff, 0xff, 0, 0x07}}, 1477 1478/* 9D */ 1479{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1480 1481/* 9E SERVICE ACTION IN(16) */ 1482{__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1483 CTL_LUN_PAT_NONE}, 1484 1485/* 9F SERVICE ACTION OUT(16) */ 1486{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1487 1488/* A0 REPORT LUNS */ 1489{ctl_report_luns, CTL_SERIDX_INQ, CTL_FLAG_DATA_IN | 1490 CTL_CMD_FLAG_OK_ON_NO_LUN | 1491 CTL_CMD_FLAG_OK_ON_BOTH | 1492 CTL_CMD_FLAG_ALLOW_ON_RESV | 1493 CTL_CMD_FLAG_NO_SENSE | 1494 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 1495 CTL_CMD_FLAG_OK_ON_STANDBY | 1496 CTL_CMD_FLAG_OK_ON_UNAVAIL | 1497 CTL_CMD_FLAG_ALLOW_ON_PR_RESV | 1498 CTL_CMD_FLAG_RUN_HERE, 1499 CTL_LUN_PAT_NONE, 1500 12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1501 1502/* A1 BLANK */ 1503{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1504 1505/* A2 SEND EVENT */ 1506{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1507 1508/* A3 MAINTENANCE IN */ 1509{__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1510 CTL_LUN_PAT_NONE}, 1511 1512/* A4 MAINTENANCE OUT */ 1513{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1514 1515/* A5 MOVE MEDIUM */ 1516{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1517 1518/* A6 EXCHANGE MEDIUM */ 1519{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1520 1521/* A7 MOVE MEDIUM ATTACHED */ 1522{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1523 1524/* A8 READ(12) */ 1525{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | 1526 CTL_CMD_FLAG_OK_ON_CDROM | 1527 CTL_FLAG_DATA_IN | 1528 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 1529 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 1530 12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1531 1532/* A9 PLAY TRACK RELATIVE(12) */ 1533{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1534 1535/* AA WRITE(12) */ 1536{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT, 1537 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1538 12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1539 1540/* AB SERVICE ACTION IN(12) */ 1541{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1542 1543/* AC ERASE(12) */ 1544{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1545 1546/* AD READ DVD STRUCTURE */ 1547{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1548 1549/* AE WRITE AND VERIFY(12) */ 1550{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_DIRECT| CTL_FLAG_DATA_OUT, 1551 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1552 12, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1553 1554/* AF VERIFY(12) */ 1555{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_DIRECT | 1556 CTL_FLAG_DATA_OUT | 1557 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 1558 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 1559 12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1560 1561/* B0 SEARCH DATA HIGH(12) */ 1562{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1563 1564/* B1 SEARCH DATA EQUAL(12) */ 1565{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1566 1567/* B2 SEARCH DATA LOW(12) */ 1568{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1569 1570/* B3 SET LIMITS(12) */ 1571{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1572 1573/* B4 READ ELEMENT STATUS ATTACHED */ 1574{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1575 1576/* B5 REQUEST VOLUME ELEMENT ADDRESS */ 1577{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1578 1579/* B6 SEND VOLUME TAG */ 1580{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1581 1582/* B7 READ DEFECT DATA(12) */ 1583{ctl_read_defect, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_DIRECT | 1584 CTL_FLAG_DATA_IN | 1585 CTL_CMD_FLAG_ALLOW_ON_PR_WRESV, 1586 CTL_LUN_PAT_NONE, 1587 12, {0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1588 1589/* B8 READ ELEMENT STATUS */ 1590{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1591 1592/* B9 READ CD MSF */ 1593{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1594 1595/* BA REDUNDANCY GROUP IN */ 1596{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1597 1598/* BB REDUNDANCY GROUP OUT */ 1599{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1600 1601/* BC SPARE IN */ 1602{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1603 1604/* BD SPARE OUT / MECHANISM STATUS */ 1605{ctl_mechanism_status, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_CDROM | 1606 CTL_CMD_FLAG_OK_ON_NO_MEDIA | 1607 CTL_CMD_FLAG_ALLOW_ON_PR_RESV | 1608 CTL_FLAG_DATA_IN, 1609 CTL_LUN_PAT_NONE, 1610 12, {0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0, 0x07}}, 1611 1612/* BE VOLUME SET IN */ 1613{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1614 1615/* BF VOLUME SET OUT */ 1616{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1617 1618/* C0 */ 1619{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1620 1621/* C1 */ 1622{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1623 1624/* C2 */ 1625{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1626 1627/* C3 */ 1628{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1629 1630/* C4 */ 1631{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1632 1633/* C5 */ 1634{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1635 1636/* C6 */ 1637{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1638 1639/* C7 */ 1640{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1641 1642/* C8 */ 1643{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1644 1645/* C9 */ 1646{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1647 1648/* CA */ 1649{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1650 1651/* CB */ 1652{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1653 1654/* CC */ 1655{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1656 1657/* CD */ 1658{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1659 1660/* CE */ 1661{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1662 1663/* CF */ 1664{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1665 1666/* D0 */ 1667{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1668 1669/* D1 */ 1670{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1671 1672/* D2 */ 1673{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1674 1675/* D3 */ 1676{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1677 1678/* D4 */ 1679{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1680 1681/* D5 */ 1682{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1683 1684/* D6 */ 1685{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1686 1687/* D7 */ 1688{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1689 1690/* D8 */ 1691{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1692 1693/* D9 */ 1694{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1695 1696/* DA */ 1697{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1698 1699/* DB */ 1700{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1701 1702/* DC */ 1703{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1704 1705/* DD */ 1706{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1707 1708/* DE */ 1709{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1710 1711/* DF */ 1712{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1713 1714/* E0 */ 1715{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1716 1717/* E1 */ 1718{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1719 1720/* E2 */ 1721{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1722 1723/* E3 */ 1724{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1725 1726/* E4 */ 1727{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1728 1729/* E5 */ 1730{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1731 1732/* E6 */ 1733{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1734 1735/* E7 */ 1736{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1737 1738/* E8 */ 1739{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1740 1741/* E9 */ 1742{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1743 1744/* EA */ 1745{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1746 1747/* EB */ 1748{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1749 1750/* EC */ 1751{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1752 1753/* ED */ 1754{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1755 1756/* EE */ 1757{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1758 1759/* EF */ 1760{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1761 1762/* F0 */ 1763{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1764 1765/* F1 */ 1766{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1767 1768/* F2 */ 1769{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1770 1771/* F3 */ 1772{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1773 1774/* F4 */ 1775{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1776 1777/* F5 */ 1778{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1779 1780/* F6 */ 1781{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1782 1783/* F7 */ 1784{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1785 1786/* F8 */ 1787{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1788 1789/* F9 */ 1790{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1791 1792/* FA */ 1793{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1794 1795/* FB */ 1796{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1797 1798/* FC */ 1799{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1800 1801/* FD */ 1802{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1803 1804/* FE */ 1805{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1806 1807/* FF */ 1808{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE} 1809 1810}; 1811