ctl_cmd_table.c revision 272642
1/*- 2 * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 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. 16 * 17 * NO WARRANTY 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. 29 * 30 * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $ 31 * $FreeBSD: stable/10/sys/cam/ctl/ctl_cmd_table.c 272642 2014-10-06 13:30:06Z mav $ 32 */ 33/* 34 * CAM Target Layer command table. 35 * 36 * Author: Ken Merry <ken@FreeBSD.org>, Kim Le 37 */ 38 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> 48 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> 59 60/* 61 * Whenever support for a new command is added, it should be added to these 62 * tables. 63 */ 64 65/* 5E PERSISTENT RESERVE IN */ 66const struct ctl_cmd_entry ctl_cmd_table_5e[32] = 67{ 68/* 00 READ KEYS */ 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_SECONDARY | 74 CTL_FLAG_DATA_IN | 75 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 76 CTL_LUN_PAT_NONE, 77 10, { 0x00, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 78 79/* 01 READ RESERVATION */ 80{ctl_persistent_reserve_in, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 81 CTL_CMD_FLAG_OK_ON_BOTH | 82 CTL_CMD_FLAG_OK_ON_STOPPED | 83 CTL_CMD_FLAG_OK_ON_INOPERABLE | 84 CTL_CMD_FLAG_OK_ON_SECONDARY | 85 CTL_FLAG_DATA_IN | 86 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 87 CTL_LUN_PAT_NONE, 88 10, { 0x01, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 89 90/* 02 REPORT CAPABILITIES */ 91{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV | 92 CTL_CMD_FLAG_OK_ON_BOTH | 93 CTL_CMD_FLAG_OK_ON_STOPPED | 94 CTL_CMD_FLAG_OK_ON_INOPERABLE | 95 CTL_CMD_FLAG_OK_ON_SECONDARY | 96 CTL_FLAG_DATA_IN | 97 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 98 CTL_LUN_PAT_NONE, 99 10, { 0x02, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 100 101/* 03 READ FULL STATUS */ 102{ctl_persistent_reserve_in, CTL_SERIDX_INQ, CTL_CMD_FLAG_ALLOW_ON_RESV | 103 CTL_CMD_FLAG_OK_ON_BOTH | 104 CTL_CMD_FLAG_OK_ON_STOPPED | 105 CTL_CMD_FLAG_OK_ON_INOPERABLE | 106 CTL_CMD_FLAG_OK_ON_SECONDARY | 107 CTL_FLAG_DATA_IN | 108 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 109 CTL_LUN_PAT_NONE, 110 10, { 0x03, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 111 112/* 04-1f */ 113}; 114 115/* 5F PERSISTENT RESERVE OUT */ 116const struct ctl_cmd_entry ctl_cmd_table_5f[32] = 117{ 118/* 00 REGISTER */ 119{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 120 CTL_CMD_FLAG_OK_ON_BOTH | 121 CTL_CMD_FLAG_OK_ON_STOPPED | 122 CTL_CMD_FLAG_OK_ON_INOPERABLE | 123 CTL_CMD_FLAG_OK_ON_SECONDARY | 124 CTL_FLAG_DATA_OUT | 125 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 126 CTL_LUN_PAT_NONE, 127 10, { 0x00, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 128 129/* 01 RESERVE */ 130{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 131 CTL_CMD_FLAG_OK_ON_BOTH | 132 CTL_CMD_FLAG_OK_ON_STOPPED | 133 CTL_CMD_FLAG_OK_ON_INOPERABLE | 134 CTL_CMD_FLAG_OK_ON_SECONDARY | 135 CTL_FLAG_DATA_OUT | 136 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 137 CTL_LUN_PAT_NONE, 138 10, { 0x01, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 139 140/* 02 RELEASE */ 141{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 142 CTL_CMD_FLAG_OK_ON_BOTH | 143 CTL_CMD_FLAG_OK_ON_STOPPED | 144 CTL_CMD_FLAG_OK_ON_INOPERABLE | 145 CTL_CMD_FLAG_OK_ON_SECONDARY | 146 CTL_FLAG_DATA_OUT | 147 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 148 CTL_LUN_PAT_NONE, 149 10, { 0x02, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 150 151/* 03 CLEAR */ 152{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 153 CTL_CMD_FLAG_OK_ON_BOTH | 154 CTL_CMD_FLAG_OK_ON_STOPPED | 155 CTL_CMD_FLAG_OK_ON_INOPERABLE | 156 CTL_CMD_FLAG_OK_ON_SECONDARY | 157 CTL_FLAG_DATA_OUT | 158 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 159 CTL_LUN_PAT_NONE, 160 10, { 0x03, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 161 162/* 04 PREEMPT */ 163{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 164 CTL_CMD_FLAG_OK_ON_BOTH | 165 CTL_CMD_FLAG_OK_ON_STOPPED | 166 CTL_CMD_FLAG_OK_ON_INOPERABLE | 167 CTL_CMD_FLAG_OK_ON_SECONDARY | 168 CTL_FLAG_DATA_OUT | 169 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 170 CTL_LUN_PAT_NONE, 171 10, { 0x04, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 172 173/* 05 PREEMPT AND ABORT */ 174{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 175 176/* 06 REGISTER AND IGNORE EXISTING KEY */ 177{ctl_persistent_reserve_out, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 178 CTL_CMD_FLAG_OK_ON_BOTH | 179 CTL_CMD_FLAG_OK_ON_STOPPED | 180 CTL_CMD_FLAG_OK_ON_INOPERABLE | 181 CTL_CMD_FLAG_OK_ON_SECONDARY | 182 CTL_FLAG_DATA_OUT | 183 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 184 CTL_LUN_PAT_NONE, 185 10, { 0x06, 0xff, 0, 0, 0xff, 0xff, 0xff, 0xff, 0x07}}, 186 187/* 07 REGISTER AND MOVE */ 188{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 189 190/* 08-1f */ 191}; 192 193/* 83 EXTENDED COPY */ 194const struct ctl_cmd_entry ctl_cmd_table_83[32] = 195{ 196/* 00 EXTENDED COPY (LID1) */ 197{ctl_extended_copy_lid1, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH | 198 CTL_FLAG_DATA_OUT, 199 CTL_LUN_PAT_NONE, 200 16, { 0x00, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 201 202/* 01 EXTENDED COPY (LID4) */ 203{ctl_extended_copy_lid4, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH | 204 CTL_FLAG_DATA_OUT, 205 CTL_LUN_PAT_NONE, 206 16, { 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 207 208/* 02 */ 209{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 210 211/* 03 */ 212{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 213 214/* 04 */ 215{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 216 217/* 05 */ 218{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 219 220/* 06 */ 221{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 222 223/* 07 */ 224{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 225 226/* 08 */ 227{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 228 229/* 09 */ 230{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 231 232/* 0A */ 233{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 234 235/* 0B */ 236{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 237 238/* 0C */ 239{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 240 241/* 0D */ 242{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 243 244/* 0E */ 245{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 246 247/* 0F */ 248{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 249 250/* 10 POPULATE TOKEN */ 251{ctl_populate_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN | 252 CTL_FLAG_DATA_OUT, 253 CTL_LUN_PAT_NONE, 254 16, { 0x10, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 255 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 256 257/* 11 WRITE USING TOKEN */ 258{ctl_write_using_token, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN | 259 CTL_FLAG_DATA_OUT, 260 CTL_LUN_PAT_NONE, 261 16, { 0x11, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 262 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 263 264/* 12 */ 265{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 266 267/* 13 */ 268{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 269 270/* 14 */ 271{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 272 273/* 15 */ 274{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 275 276/* 16 */ 277{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 278 279/* 17 */ 280{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 281 282/* 18 */ 283{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 284 285/* 19 */ 286{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 287 288/* 1A */ 289{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 290 291/* 1B */ 292{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 293 294/* 1C COPY OPERATION ABORT */ 295{ctl_copy_operation_abort, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_BOTH | 296 CTL_FLAG_DATA_NONE, 297 CTL_LUN_PAT_NONE, 298 16, { 0x1c, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x07}}, 299}; 300 301/* 84 RECEIVE COPY STATUS */ 302const struct ctl_cmd_entry ctl_cmd_table_84[32] = 303{ 304/* 00 RECEIVE COPY STATUS (LID1) */ 305{ctl_receive_copy_status_lid1, CTL_SERIDX_RD_CAP, 306 CTL_CMD_FLAG_OK_ON_BOTH | 307 CTL_FLAG_DATA_IN | 308 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 309 CTL_LUN_PAT_NONE, 310 16, {0x00, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 311 312/* 01 RECEIVE COPY DATA (LID1) */ 313{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 314 315/* 02 */ 316{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 317 318/* 03 RECEIVE COPY OPERATING PARAMETERS */ 319{ctl_receive_copy_operating_parameters, CTL_SERIDX_RD_CAP, 320 CTL_CMD_FLAG_OK_ON_BOTH | 321 CTL_CMD_FLAG_OK_ON_STOPPED | 322 CTL_CMD_FLAG_OK_ON_INOPERABLE | 323 CTL_CMD_FLAG_OK_ON_SECONDARY | 324 CTL_FLAG_DATA_IN | 325 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 326 CTL_LUN_PAT_NONE, 327 16, {0x03, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 328 329/* 04 RECEIVE COPY FAILURE DETAILS (LID1) */ 330{ctl_receive_copy_failure_details, CTL_SERIDX_RD_CAP, 331 CTL_CMD_FLAG_OK_ON_BOTH | 332 CTL_FLAG_DATA_IN | 333 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 334 CTL_LUN_PAT_NONE, 335 16, {0x04, 0xff, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 336 337/* 05 RECEIVE COPY STATUS (LID4) */ 338{ctl_receive_copy_status_lid4, CTL_SERIDX_RD_CAP, 339 CTL_CMD_FLAG_OK_ON_BOTH | 340 CTL_FLAG_DATA_IN, 341 CTL_LUN_PAT_NONE, 342 16, {0x05, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 343 344/* 06 RECEIVE COPY DATA (LID4)*/ 345{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 346 347/* 07 RECEIVE ROD TOKEN INFORMATION */ 348{ctl_receive_rod_token_information, CTL_SERIDX_RD_CAP, 349 CTL_CMD_FLAG_OK_ON_BOTH | 350 CTL_FLAG_DATA_IN, 351 CTL_LUN_PAT_NONE, 352 16, {0x07, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 353 354/* 08 REPORT ALL ROD TOKENS */ 355{ctl_report_all_rod_tokens, CTL_SERIDX_RD_CAP, 356 CTL_CMD_FLAG_OK_ON_BOTH | 357 CTL_FLAG_DATA_IN, 358 CTL_LUN_PAT_NONE, 359 16, {0x08, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 360}; 361 362/* 9E SERVICE ACTION IN(16) */ 363const struct ctl_cmd_entry ctl_cmd_table_9e[32] = 364{ 365/* 00 */ 366{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 367 368/* 01 */ 369{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 370 371/* 02 */ 372{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 373 374/* 03 */ 375{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 376 377/* 04 */ 378{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 379 380/* 05 */ 381{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 382 383/* 06 */ 384{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 385 386/* 07 */ 387{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 388 389/* 08 */ 390{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 391 392/* 09 */ 393{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 394 395/* 0A */ 396{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 397 398/* 0B */ 399{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 400 401/* 0C */ 402{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 403 404/* 0D */ 405{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 406 407/* 0E */ 408{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 409 410/* 0F */ 411{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 412 413/* 10 */ 414{ctl_read_capacity_16, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN | 415 CTL_CMD_FLAG_OK_ON_STOPPED | 416 CTL_CMD_FLAG_OK_ON_INOPERABLE | 417 CTL_CMD_FLAG_OK_ON_SECONDARY | 418 CTL_FLAG_DATA_IN | 419 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 420 CTL_LUN_PAT_READCAP, 421 16, {0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 422 423/* 11-1f */ 424}; 425 426/* A3 MAINTENANCE IN */ 427const struct ctl_cmd_entry ctl_cmd_table_a3[32] = 428{ 429/* 00 */ 430{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 431 432/* 01 */ 433{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 434 435/* 02 */ 436{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 437 438/* 03 */ 439{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 440 441/* 04 */ 442{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 443 444/* 05 */ 445{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 446 447/* 06 */ 448{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 449 450/* 07 */ 451{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 452 453/* 08 */ 454{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 455 456/* 09 */ 457{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 458 459/* 0A REPORT TARGET PORT GROUPS */ 460{ctl_report_tagret_port_groups, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH | 461 CTL_CMD_FLAG_OK_ON_STOPPED | 462 CTL_CMD_FLAG_OK_ON_INOPERABLE | 463 CTL_CMD_FLAG_OK_ON_SECONDARY | 464 CTL_FLAG_DATA_IN, 465 CTL_LUN_PAT_NONE, 466 12, {0x0a, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 467 468/* 0B */ 469{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 470 471/* 0C REPORT SUPPORTED_OPCODES */ 472{ctl_report_supported_opcodes, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH | 473 CTL_CMD_FLAG_OK_ON_STOPPED | 474 CTL_CMD_FLAG_OK_ON_INOPERABLE | 475 CTL_CMD_FLAG_OK_ON_SECONDARY | 476 CTL_FLAG_DATA_IN | 477 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 478 CTL_LUN_PAT_NONE, 479 12, {0x0c, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 480 481/* 0D REPORT SUPPORTED_TASK MANAGEMENT FUNCTIONS */ 482{ctl_report_supported_tmf, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH | 483 CTL_CMD_FLAG_OK_ON_STOPPED | 484 CTL_CMD_FLAG_OK_ON_INOPERABLE | 485 CTL_CMD_FLAG_OK_ON_SECONDARY | 486 CTL_FLAG_DATA_IN | 487 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 488 CTL_LUN_PAT_NONE, 489 12, {0x0d, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 490 491/* 0E */ 492{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 493 494/* 0F REPORT TIMESTAMP */ 495{ctl_report_timestamp, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_BOTH | 496 CTL_CMD_FLAG_OK_ON_STOPPED | 497 CTL_CMD_FLAG_OK_ON_INOPERABLE | 498 CTL_CMD_FLAG_OK_ON_SECONDARY | 499 CTL_FLAG_DATA_IN, 500 CTL_LUN_PAT_NONE, 501 12, {0x0f, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 502 503/* 10-1f */ 504}; 505 506const struct ctl_cmd_entry ctl_cmd_table[256] = 507{ 508/* 00 TEST UNIT READY */ 509{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH | 510 CTL_FLAG_DATA_NONE | 511 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 512 CTL_LUN_PAT_TUR, 6, {0, 0, 0, 0, 0x07}}, 513 514/* 01 REWIND */ 515{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 516 517/* 02 */ 518{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 519 520/* 03 REQUEST SENSE */ 521{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN | 522 CTL_CMD_FLAG_OK_ON_ALL_LUNS | 523 CTL_CMD_FLAG_ALLOW_ON_RESV | 524 CTL_CMD_FLAG_NO_SENSE | 525 CTL_CMD_FLAG_OK_ON_STOPPED | 526 CTL_CMD_FLAG_OK_ON_INOPERABLE | 527 CTL_CMD_FLAG_OK_ON_OFFLINE | 528 CTL_CMD_FLAG_OK_ON_SECONDARY | 529 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 530 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0xff, 0x07}}, 531 532/* 04 FORMAT UNIT */ 533{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN | 534 CTL_CMD_FLAG_OK_ON_INOPERABLE | 535 CTL_FLAG_DATA_OUT, 536 CTL_LUN_PAT_NONE, 6, {0xff, 0, 0, 0, 0x07}}, 537 538/* 05 READ BLOCK LIMITS */ 539{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 540 541/* 06 */ 542{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 543 544/* 07 REASSIGN BLOCKS */ 545{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 546 547/* 08 READ(6) */ 548{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | 549 CTL_FLAG_DATA_IN | 550 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 551 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}}, 552 553/* 09 */ 554{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 555 556/* 0A WRITE(6) */ 557{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN | 558 CTL_FLAG_DATA_OUT, 559 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 6, {0x1f, 0xff, 0xff, 0xff, 0x07}}, 560 561/* 0B SEEK(6) */ 562{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 563 564/* 0C */ 565{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 566 567/* 0D */ 568{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 569 570/* 0E */ 571{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 572 573/* 0F READ REVERSE(6) */ 574{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 575 576/* 10 WRITE FILEMARKS(6) */ 577{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 578 579/* 11 SPACE(6) */ 580{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 581 582/* 12 INQUIRY */ 583{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS | 584 CTL_CMD_FLAG_ALLOW_ON_RESV | 585 CTL_CMD_FLAG_NO_SENSE | 586 CTL_CMD_FLAG_OK_ON_STOPPED | 587 CTL_CMD_FLAG_OK_ON_INOPERABLE | 588 CTL_CMD_FLAG_OK_ON_OFFLINE | 589 CTL_CMD_FLAG_OK_ON_SECONDARY | 590 CTL_FLAG_DATA_IN | 591 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 592 CTL_LUN_PAT_NONE, 6, {0xe1, 0xff, 0xff, 0xff, 0x07}}, 593 594/* 13 */ 595{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 596 597/* 14 RECOVER BUFFERED DATA */ 598{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 599 600/* 15 MODE SELECT(6) */ 601{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 602 CTL_CMD_FLAG_OK_ON_STOPPED | 603 CTL_CMD_FLAG_OK_ON_INOPERABLE | 604 CTL_CMD_FLAG_OK_ON_SECONDARY | 605 CTL_FLAG_DATA_OUT, 606 CTL_LUN_PAT_NONE, 6, {0x11, 0, 0, 0xff, 0x07}}, 607 608/* 16 RESERVE(6) */ 609{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 610 CTL_CMD_FLAG_OK_ON_BOTH | 611 CTL_CMD_FLAG_OK_ON_STOPPED | 612 CTL_CMD_FLAG_OK_ON_INOPERABLE | 613 CTL_CMD_FLAG_OK_ON_SECONDARY | 614 CTL_FLAG_DATA_OUT, 615 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}}, 616 617/* 17 RELEASE(6) */ 618{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 619 CTL_CMD_FLAG_OK_ON_BOTH | 620 CTL_CMD_FLAG_OK_ON_STOPPED | 621 CTL_CMD_FLAG_OK_ON_INOPERABLE | 622 CTL_CMD_FLAG_OK_ON_SECONDARY | 623 CTL_FLAG_DATA_NONE, 624 CTL_LUN_PAT_NONE, 6, {0, 0, 0, 0, 0x07}}, 625 626/* 18 COPY */ 627{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 628 629/* 19 ERASE(6) */ 630{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 631 632/* 1A MODE SENSE(6) */ 633{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 634 CTL_CMD_FLAG_OK_ON_STOPPED | 635 CTL_CMD_FLAG_OK_ON_INOPERABLE | 636 CTL_CMD_FLAG_OK_ON_SECONDARY | 637 CTL_FLAG_DATA_IN | 638 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 639 CTL_LUN_PAT_NONE, 6, {0x08, 0xff, 0xff, 0xff, 0x07}}, 640 641/* 1B START STOP UNIT */ 642{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | 643 CTL_CMD_FLAG_OK_ON_STOPPED | 644 CTL_CMD_FLAG_OK_ON_INOPERABLE | 645 CTL_CMD_FLAG_OK_ON_OFFLINE | 646 CTL_FLAG_DATA_NONE | 647 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 648 CTL_LUN_PAT_NONE, 6, {0x01, 0, 0, 0x03, 0x07}}, 649 650/* 1C RECEIVE DIAGNOSTIC RESULTS */ 651{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 652 653/* 1D SEND DIAGNOSTIC */ 654{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 655 656/* 1E PREVENT ALLOW MEDIUM REMOVAL */ 657{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 658 659/* 1F */ 660{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 661 662/* 20 */ 663{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 664 665/* 21 */ 666{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 667 668/* 22 */ 669{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 670 671/* 23 */ 672{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 673 674/* 24 SET WINDOW */ 675{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 676 677/* 25 READ CAPACITY(10) */ 678{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN| 679 CTL_CMD_FLAG_OK_ON_STOPPED | 680 CTL_CMD_FLAG_OK_ON_INOPERABLE | 681 CTL_CMD_FLAG_OK_ON_SECONDARY | 682 CTL_FLAG_DATA_IN | 683 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 684 CTL_LUN_PAT_READCAP, 10, {0, 0, 0, 0, 0, 0, 0, 0, 0x07}}, 685 686/* 26 */ 687{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 688 689/* 27 */ 690{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 691 692/* 28 READ(10) */ 693{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | 694 CTL_FLAG_DATA_IN | 695 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 696 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 697 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 698 699/* 29 READ GENERATION */ 700{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 701 702/* 2A WRITE(10) */ 703{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 704 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 705 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 706 707/* 2B SEEK(10) */ 708{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 709 710/* 2C ERASE(10) */ 711{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 712 713/* 2D READ UPDATED BLOCK */ 714{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 715 716/* 2E WRITE AND VERIFY(10) */ 717{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 718 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 719 10, {0x12, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 720 721/* 2F VERIFY(10) */ 722{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | 723 CTL_FLAG_DATA_OUT | 724 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 725 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 726 10, {0x16, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 727 728/* 30 SEARCH DATA HIGH(10) */ 729{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 730 731/* 31 SEARCH DATA EQUAL(10) */ 732{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 733 734/* 32 SEARCH DATA LOW(10) */ 735{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 736 737/* 33 SET LIMITS(10) */ 738{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 739 740/* 34 PRE-FETCH(10) */ 741{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 742 743/* 35 SYNCHRONIZE CACHE(10) */ 744{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | 745 CTL_FLAG_DATA_NONE, 746 CTL_LUN_PAT_NONE, 747 10, {0, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 748 749/* 36 LOCK UNLOCK CACHE(10) */ 750{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 751 752/* 37 READ DEFECT DATA(10) */ 753{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 754 755/* 38 MEDIUM SCAN */ 756{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 757 758/* 39 COMPARE */ 759{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 760 761/* 3A COPY AND VERIFY */ 762{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 763 764/* 3B WRITE BUFFER */ 765{ctl_write_buffer, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 766 CTL_FLAG_DATA_OUT, 767 CTL_LUN_PAT_NONE, 768 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}}, 769 770/* 3C READ BUFFER */ 771{ctl_read_buffer, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 772 CTL_FLAG_DATA_IN | 773 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 774 CTL_LUN_PAT_NONE, 775 10, {0x1f, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07}}, 776 777/* 3D UPDATE BLOCK */ 778{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 779 780/* 3E READ LONG */ 781{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 782 783/* 3F WRITE LONG */ 784{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 785 786/* 40 CHANGE DEFINITION */ 787{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 788 789/* 41 WRITE SAME(10) */ 790{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN | 791 CTL_FLAG_DATA_OUT, 792 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 793 10, {0x1a, 0xff, 0xff, 0xff, 0xff, 0, 0xff, 0xff, 0x07}}, 794 795/* 42 READ SUB-CHANNEL / UNMAP */ 796{ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT, 797 CTL_LUN_PAT_WRITE, 798 10, {1, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07}}, 799 800/* 43 READ TOC/PMA/ATIP */ 801{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 802 803/* 44 REPORT DENSITY SUPPORT */ 804{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 805 806/* 45 PLAY AUDIO(10) */ 807{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 808 809/* 46 GET CONFIGURATION */ 810{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 811 812/* 47 PLAY AUDIO MSF */ 813{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 814 815/* 48 PLAY AUDIO TRACK INDEX */ 816{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 817 818/* 49 PLAY TRACK RELATIVE(10) */ 819{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 820 821/* 4A GET EVENT STATUS NOTIFICATION */ 822{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 823 824/* 4B PAUSE/RESUME */ 825{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 826 827/* 4C LOG SELECT */ 828{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 829 830/* 4D LOG SENSE */ 831{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 832 833/* 4E STOP PLAY/SCAN */ 834{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 835 836/* 4F */ 837{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 838 839/* 50 XDWRITE(10) */ 840{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 841 842/* 51 XPWRITE(10) */ 843{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 844 845/* 52 XDREAD(10) */ 846{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 847 848/* 53 RESERVE TRACK */ 849{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 850 851/* 54 SEND OPC INFORMATION */ 852{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 853 854/* 55 MODE SELECT(10) */ 855{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 856 CTL_CMD_FLAG_OK_ON_STOPPED | 857 CTL_CMD_FLAG_OK_ON_INOPERABLE | 858 CTL_CMD_FLAG_OK_ON_SECONDARY | 859 CTL_FLAG_DATA_OUT, 860 CTL_LUN_PAT_NONE, 10, {0x11, 0, 0, 0, 0, 0, 0xff, 0xff, 0x07} }, 861 862/* 56 RESERVE(10) */ 863{ctl_scsi_reserve, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 864 CTL_CMD_FLAG_OK_ON_BOTH | 865 CTL_CMD_FLAG_OK_ON_STOPPED | 866 CTL_CMD_FLAG_OK_ON_INOPERABLE | 867 CTL_CMD_FLAG_OK_ON_SECONDARY | 868 CTL_FLAG_DATA_OUT, 869 CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} }, 870 871/* 57 RELEASE(10) */ 872{ctl_scsi_release, CTL_SERIDX_RES, CTL_CMD_FLAG_ALLOW_ON_RESV | 873 CTL_CMD_FLAG_OK_ON_BOTH | 874 CTL_CMD_FLAG_OK_ON_STOPPED | 875 CTL_CMD_FLAG_OK_ON_INOPERABLE | 876 CTL_CMD_FLAG_OK_ON_SECONDARY | 877 CTL_FLAG_DATA_OUT, 878 CTL_LUN_PAT_NONE, 10, {0x02, 0, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} }, 879 880/* 58 REPAIR TRACK */ 881{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 882 883/* 59 READ MASTER CUE */ 884{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 885 886/* 5A MODE SENSE(10) */ 887{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 888 CTL_CMD_FLAG_OK_ON_STOPPED | 889 CTL_CMD_FLAG_OK_ON_INOPERABLE | 890 CTL_CMD_FLAG_OK_ON_SECONDARY | 891 CTL_FLAG_DATA_IN | 892 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 893 CTL_LUN_PAT_NONE, 10, {0x18, 0xff, 0xff, 0, 0, 0, 0xff, 0xff, 0x07} }, 894 895/* 5B CLOSE TRACK/SESSION */ 896{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 897 898/* 5C READ BUFFER CAPACITY */ 899{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 900 901/* 5D SEND CUE SHEET */ 902{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 903 904/* 5E PERSISTENT RESERVE IN */ 905{__DECONST(ctl_opfunc *, ctl_cmd_table_5e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 906 CTL_LUN_PAT_NONE}, 907 908/* 5F PERSISTENT RESERVE OUT */ 909{__DECONST(ctl_opfunc *, ctl_cmd_table_5f), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 910 CTL_LUN_PAT_NONE}, 911 912/* 60 */ 913{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 914 915/* 61 */ 916{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 917 918/* 62 */ 919{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 920 921/* 63 */ 922{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 923 924/* 64 */ 925{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 926 927/* 65 */ 928{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 929 930/* 66 */ 931{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 932 933/* 67 */ 934{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 935 936/* 68 */ 937{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 938 939/* 69 */ 940{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 941 942/* 6A */ 943{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 944 945/* 6B */ 946{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 947 948/* 6C */ 949{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 950 951/* 6D */ 952{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 953 954/* 6E */ 955{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 956 957/* 6F */ 958{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 959 960/* 70 */ 961{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 962 963/* 71 */ 964{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 965 966/* 72 */ 967{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 968 969/* 73 */ 970{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 971 972/* 74 */ 973{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 974 975/* 75 */ 976{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 977 978/* 76 */ 979{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 980 981/* 77 */ 982{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 983 984/* 78 */ 985{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 986 987/* 79 */ 988{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 989 990/* 7A */ 991{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 992 993/* 7B */ 994{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 995 996/* 7C */ 997{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 998 999/* 7D */ 1000{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1001 1002/* 7E */ 1003{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1004 1005/* 7F */ 1006{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1007 1008/* 80 XDWRITE EXTENDED(16) */ 1009{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1010 1011/* 81 REBUILD(16) */ 1012{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1013 1014/* 82 REGENERATE(16) */ 1015{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1016 1017/* 83 EXTENDED COPY */ 1018{__DECONST(ctl_opfunc *, ctl_cmd_table_83), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1019 CTL_LUN_PAT_NONE}, 1020 1021/* 84 RECEIVE COPY RESULTS */ 1022{__DECONST(ctl_opfunc *, ctl_cmd_table_84), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1023 CTL_LUN_PAT_NONE}, 1024 1025/* 85 */ 1026{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1027 1028/* 86 ACCESS CONTROL IN */ 1029{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1030 1031/* 87 ACCESS CONTROL OUT */ 1032{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1033 1034/* 88 READ(16) */ 1035{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN | 1036 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 1037 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 1038 16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1039 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1040 1041/* 89 COMPARE AND WRITE */ 1042{ctl_cnw, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 1043 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1044 16, {0x18, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1045 0xff, 0xff, 0, 0, 0, 0xff, 0, 0x07}}, 1046 1047/* 8A WRITE(16) */ 1048{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 1049 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1050 16, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1051 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1052 1053/* 8B */ 1054{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1055 1056/* 8C READ ATTRIBUTE */ 1057{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1058 1059/* 8D WRITE ATTRIBUTE */ 1060{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1061 1062/* 8E WRITE AND VERIFY(16) */ 1063{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 1064 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1065 16, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1066 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1067 1068/* 8F VERIFY(16) */ 1069{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | 1070 CTL_FLAG_DATA_OUT | 1071 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 1072 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 1073 16, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1074 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1075 1076/* 90 PRE-FETCH(16) */ 1077{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1078 1079/* 91 SYNCHRONIZE CACHE(16) */ 1080{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | 1081 CTL_FLAG_DATA_NONE, 1082 CTL_LUN_PAT_NONE, 1083 16, {0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1084 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1085 1086/* 92 LOCK UNLOCK CACHE(16) */ 1087{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1088 1089/* 93 WRITE SAME(16) */ 1090{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN | 1091 CTL_FLAG_DATA_OUT, 1092 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1093 16, {0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1094 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1095 1096/* 94 */ 1097{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1098 1099/* 95 */ 1100{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1101 1102/* 96 */ 1103{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1104 1105/* 97 */ 1106{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1107 1108/* 98 */ 1109{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1110 1111/* 99 */ 1112{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1113 1114/* 9A */ 1115{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1116 1117/* 9B */ 1118{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1119 1120/* 9C */ 1121{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1122 1123/* 9D */ 1124{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1125 1126/* 9E SERVICE ACTION IN(16) */ 1127{__DECONST(ctl_opfunc *, ctl_cmd_table_9e), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1128 CTL_LUN_PAT_NONE}, 1129 1130/* 9F SERVICE ACTION OUT(16) */ 1131{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1132 1133/* A0 REPORT LUNS */ 1134{ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS | 1135 CTL_CMD_FLAG_ALLOW_ON_RESV | 1136 CTL_CMD_FLAG_NO_SENSE | 1137 CTL_CMD_FLAG_OK_ON_STOPPED | 1138 CTL_CMD_FLAG_OK_ON_INOPERABLE | 1139 CTL_CMD_FLAG_OK_ON_OFFLINE | 1140 CTL_CMD_FLAG_OK_ON_SECONDARY | 1141 CTL_FLAG_DATA_IN | 1142 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 1143 CTL_LUN_PAT_NONE, 1144 12, {0, 0xff, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1145 1146/* A1 BLANK */ 1147{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1148 1149/* A2 SEND EVENT */ 1150{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1151 1152/* A3 MAINTENANCE IN */ 1153{__DECONST(ctl_opfunc *, ctl_cmd_table_a3), CTL_SERIDX_INVLD, CTL_CMD_FLAG_SA5, 1154 CTL_LUN_PAT_NONE}, 1155 1156/* A4 MAINTENANCE OUT */ 1157{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1158 1159/* A5 MOVE MEDIUM */ 1160{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1161 1162/* A6 EXCHANGE MEDIUM */ 1163{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1164 1165/* A7 MOVE MEDIUM ATTACHED */ 1166{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1167 1168/* A8 READ(12) */ 1169{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN | 1170 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 1171 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 1172 12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1173 1174/* A9 PLAY TRACK RELATIVE(12) */ 1175{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1176 1177/* AA WRITE(12) */ 1178{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 1179 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1180 12, {0x1a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1181 1182/* AB SERVICE ACTION IN(12) */ 1183{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1184 1185/* AC ERASE(12) */ 1186{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1187 1188/* AD READ DVD STRUCTURE */ 1189{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1190 1191/* AE WRITE AND VERIFY(12) */ 1192{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 1193 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE, 1194 12, {0x12, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1195 1196/* AF VERIFY(12) */ 1197{ctl_verify, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | 1198 CTL_FLAG_DATA_OUT | 1199 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 1200 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE, 1201 12, {0x16, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0x07}}, 1202 1203/* B0 SEARCH DATA HIGH(12) */ 1204{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1205 1206/* B1 SEARCH DATA EQUAL(12) */ 1207{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1208 1209/* B2 SEARCH DATA LOW(12) */ 1210{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1211 1212/* B3 SET LIMITS(12) */ 1213{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1214 1215/* B4 READ ELEMENT STATUS ATTACHED */ 1216{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1217 1218/* B5 REQUEST VOLUME ELEMENT ADDRESS */ 1219{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1220 1221/* B6 SEND VOLUME TAG */ 1222{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1223 1224/* B7 READ DEFECT DATA(12) */ 1225{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1226 1227/* B8 READ ELEMENT STATUS */ 1228{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1229 1230/* B9 READ CD MSF */ 1231{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1232 1233/* BA REDUNDANCY GROUP IN */ 1234{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1235 1236/* BB REDUNDANCY GROUP OUT */ 1237{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1238 1239/* BC SPARE IN */ 1240{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1241 1242/* BD SPARE OUT */ 1243{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1244 1245/* BE VOLUME SET IN */ 1246{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1247 1248/* BF VOLUME SET OUT */ 1249{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1250 1251/* C0 - ISC_SEND_MSG_SHORT */ 1252//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 1253{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE, 1254 CTL_LUN_PAT_NONE, 1255 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1256 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}}, 1257 1258/* C1 - ISC_SEND_MSG */ 1259//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 1260{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT, 1261 CTL_LUN_PAT_NONE, 1262 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1263 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}}, 1264 1265/* C2 - ISC_WRITE */ 1266//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 1267{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT, 1268 CTL_LUN_PAT_NONE, 1269 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1270 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}}, 1271 1272/* C3 - ISC_READ */ 1273//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 1274{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN, 1275 CTL_LUN_PAT_NONE, 1276 16, {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 1277 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}}, 1278 1279/* C4 */ 1280{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1281 1282/* C5 */ 1283{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1284 1285/* C6 */ 1286{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1287 1288/* C7 */ 1289{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1290 1291/* C8 */ 1292{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1293 1294/* C9 */ 1295{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1296 1297/* CA */ 1298{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1299 1300/* CB */ 1301{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1302 1303/* CC */ 1304{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1305 1306/* CD */ 1307{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1308 1309/* CE */ 1310{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1311 1312/* CF */ 1313{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1314 1315/* D0 */ 1316{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1317 1318/* D1 */ 1319{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1320 1321/* D2 */ 1322{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1323 1324/* D3 */ 1325{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1326 1327/* D4 */ 1328{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1329 1330/* D5 */ 1331{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1332 1333/* D6 */ 1334{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1335 1336/* D7 */ 1337{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1338 1339/* D8 */ 1340{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1341 1342/* D9 */ 1343{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1344 1345/* DA */ 1346{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1347 1348/* DB */ 1349{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1350 1351/* DC */ 1352{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1353 1354/* DD */ 1355{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1356 1357/* DE */ 1358{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1359 1360/* DF */ 1361{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1362 1363/* E0 */ 1364{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1365 1366/* E1 */ 1367{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1368 1369/* E2 */ 1370{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1371 1372/* E3 */ 1373{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1374 1375/* E4 */ 1376{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1377 1378/* E5 */ 1379{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1380 1381/* E6 */ 1382{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1383 1384/* E7 */ 1385{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1386 1387/* E8 */ 1388{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1389 1390/* E9 */ 1391{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1392 1393/* EA */ 1394{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1395 1396/* EB */ 1397{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1398 1399/* EC */ 1400{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1401 1402/* ED */ 1403{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1404 1405/* EE */ 1406{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1407 1408/* EF */ 1409{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1410 1411/* F0 */ 1412{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1413 1414/* F1 */ 1415{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1416 1417/* F2 */ 1418{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1419 1420/* F3 */ 1421{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1422 1423/* F4 */ 1424{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1425 1426/* F5 */ 1427{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1428 1429/* F6 */ 1430{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1431 1432/* F7 */ 1433{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1434 1435/* F8 */ 1436{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1437 1438/* F9 */ 1439{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1440 1441/* FA */ 1442{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1443 1444/* FB */ 1445{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1446 1447/* FC */ 1448{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1449 1450/* FD */ 1451{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1452 1453/* FE */ 1454{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 1455 1456/* FF */ 1457{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE} 1458 1459}; 1460