ctl_cmd_table.c revision 229997
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: head/sys/cam/ctl/ctl_cmd_table.c 229997 2012-01-12 00:34:33Z ken $ 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 48#include <cam/scsi/scsi_all.h> 49#include <cam/scsi/scsi_da.h> 50#include <cam/ctl/ctl_io.h> 51#include <cam/ctl/ctl.h> 52#include <cam/ctl/ctl_frontend.h> 53#include <cam/ctl/ctl_backend.h> 54#include <cam/ctl/ctl_frontend_internal.h> 55#include <cam/ctl/ctl_ioctl.h> 56#include <cam/ctl/ctl_ha.h> 57#include <cam/ctl/ctl_private.h> 58 59/* 60 * Whenever support for a new command is added, it should be added to this 61 * table. 62 */ 63struct ctl_cmd_entry ctl_cmd_table[] = 64{ 65/* 00 TEST UNIT READY */ 66{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH | 67 CTL_FLAG_DATA_NONE | 68 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 69 CTL_LUN_PAT_TUR}, 70 71/* 01 REWIND */ 72{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 73 74/* 02 */ 75{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 76 77/* 03 REQUEST SENSE */ 78{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN | 79 CTL_CMD_FLAG_OK_ON_ALL_LUNS | 80 CTL_CMD_FLAG_ALLOW_ON_RESV | 81 CTL_CMD_FLAG_NO_SENSE | 82 CTL_CMD_FLAG_OK_ON_STOPPED | 83 CTL_CMD_FLAG_OK_ON_INOPERABLE | 84 CTL_CMD_FLAG_OK_ON_OFFLINE | 85 CTL_CMD_FLAG_OK_ON_SECONDARY | 86 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 87 CTL_LUN_PAT_NONE}, 88 89/* 04 FORMAT UNIT */ 90{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN | 91 CTL_CMD_FLAG_OK_ON_INOPERABLE | 92 CTL_FLAG_DATA_OUT, 93 CTL_LUN_PAT_NONE}, 94 95/* 05 READ BLOCK LIMITS */ 96{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 97 98/* 06 */ 99{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 100 101/* 07 REASSIGN BLOCKS */ 102{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 103 104/* 08 READ(6) */ 105{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | 106 CTL_FLAG_DATA_IN | 107 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 108 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE}, 109 110/* 09 */ 111{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 112 113/* 0A WRITE(6) */ 114{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN | 115 CTL_FLAG_DATA_OUT, 116 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 117 118/* 0B SEEK(6) */ 119{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 120 121/* 0C */ 122{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 123 124/* 0D */ 125{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 126 127/* 0E */ 128{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 129 130/* 0F READ REVERSE(6) */ 131{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 132 133/* 10 WRITE FILEMARKS(6) */ 134{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 135 136/* 11 SPACE(6) */ 137{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 138 139/* 12 INQUIRY */ 140{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS | 141 CTL_CMD_FLAG_ALLOW_ON_RESV | 142 CTL_CMD_FLAG_NO_SENSE | 143 CTL_CMD_FLAG_OK_ON_STOPPED | 144 CTL_CMD_FLAG_OK_ON_INOPERABLE | 145 CTL_CMD_FLAG_OK_ON_OFFLINE | 146 CTL_CMD_FLAG_OK_ON_SECONDARY | 147 CTL_FLAG_DATA_IN | 148 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 149 CTL_LUN_PAT_NONE}, 150 151/* 13 */ 152{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 153 154/* 14 RECOVER BUFFERED DATA */ 155{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 156 157/* 15 MODE SELECT(6) */ 158{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 159 CTL_CMD_FLAG_OK_ON_STOPPED | 160 CTL_CMD_FLAG_OK_ON_INOPERABLE | 161 CTL_CMD_FLAG_OK_ON_SECONDARY | 162 CTL_FLAG_DATA_OUT, 163 CTL_LUN_PAT_NONE}, 164 165/* 16 RESERVE(6) */ 166{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV | 167 CTL_CMD_FLAG_OK_ON_BOTH | 168 CTL_CMD_FLAG_OK_ON_STOPPED | 169 CTL_CMD_FLAG_OK_ON_INOPERABLE | 170 CTL_CMD_FLAG_OK_ON_SECONDARY | 171 CTL_FLAG_DATA_OUT, 172 CTL_LUN_PAT_NONE}, 173 174/* 17 RELEASE(6) */ 175{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV | 176 CTL_CMD_FLAG_OK_ON_BOTH | 177 CTL_CMD_FLAG_OK_ON_STOPPED | 178 CTL_CMD_FLAG_OK_ON_INOPERABLE | 179 CTL_CMD_FLAG_OK_ON_SECONDARY | 180 CTL_FLAG_DATA_NONE, 181 CTL_LUN_PAT_NONE}, 182 183/* 18 COPY */ 184{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 185 186/* 19 ERASE(6) */ 187{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 188 189/* 1A MODE SENSE(6) */ 190{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 191 CTL_CMD_FLAG_OK_ON_STOPPED | 192 CTL_CMD_FLAG_OK_ON_INOPERABLE | 193 CTL_CMD_FLAG_OK_ON_SECONDARY | 194 CTL_FLAG_DATA_IN, 195 CTL_LUN_PAT_NONE}, 196 197/* 1B START STOP UNIT */ 198{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | 199 CTL_CMD_FLAG_OK_ON_STOPPED | 200 CTL_CMD_FLAG_OK_ON_INOPERABLE | 201 CTL_CMD_FLAG_OK_ON_OFFLINE | 202 CTL_FLAG_DATA_NONE | 203 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 204 CTL_LUN_PAT_NONE}, 205 206/* 1C RECEIVE DIAGNOSTIC RESULTS */ 207{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 208 209/* 1D SEND DIAGNOSTIC */ 210{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 211 212/* 1E PREVENT ALLOW MEDIUM REMOVAL */ 213{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 214 215/* 1F */ 216{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 217 218/* 20 */ 219{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 220 221/* 21 */ 222{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 223 224/* 22 */ 225{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 226 227/* 23 */ 228{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 229 230/* 24 SET WINDOW */ 231{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 232 233/* 25 READ CAPACITY(10) */ 234{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN| 235 CTL_CMD_FLAG_OK_ON_STOPPED | 236 CTL_CMD_FLAG_OK_ON_INOPERABLE | 237 CTL_CMD_FLAG_OK_ON_SECONDARY | 238 CTL_FLAG_DATA_IN | 239 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 240 CTL_LUN_PAT_READCAP}, 241 242/* 26 */ 243{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 244 245/* 27 */ 246{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 247 248/* 28 READ(10) */ 249{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | 250 CTL_FLAG_DATA_IN | 251 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 252 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE}, 253 254/* 29 READ GENERATION */ 255{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 256 257/* 2A WRITE(10) */ 258{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 259 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 260 261/* 2B SEEK(10) */ 262{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 263 264/* 2C ERASE(10) */ 265{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 266 267/* 2D READ UPDATED BLOCK */ 268{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 269 270/* 2E WRITE AND VERIFY(10) */ 271{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 272 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 273 274/* 2F VERIFY(10) */ 275{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 276 277/* 30 SEARCH DATA HIGH(10) */ 278{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 279 280/* 31 SEARCH DATA EQUAL(10) */ 281{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 282 283/* 32 SEARCH DATA LOW(10) */ 284{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 285 286/* 33 SET LIMITS(10) */ 287{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 288 289/* 34 PRE-FETCH(10) */ 290{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 291 292/* 35 SYNCHRONIZE CACHE(10) */ 293{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | 294 CTL_FLAG_DATA_NONE, 295 CTL_LUN_PAT_NONE}, 296 297/* 36 LOCK UNLOCK CACHE(10) */ 298{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 299 300/* 37 READ DEFECT DATA(10) */ 301{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 302 303/* 38 MEDIUM SCAN */ 304{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 305 306/* 39 COMPARE */ 307{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 308 309/* 3A COPY AND VERIFY */ 310{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 311 312/* 3B WRITE BUFFER */ 313{ctl_write_buffer, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_PROC | 314 CTL_FLAG_DATA_OUT, 315 CTL_LUN_PAT_NONE}, 316 317/* 3C READ BUFFER */ 318{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 319 320/* 3D UPDATE BLOCK */ 321{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 322 323/* 3E READ LONG */ 324{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 325 326/* 3F WRITE LONG */ 327{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 328 329/* 40 CHANGE DEFINITION */ 330{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 331 332/* 41 WRITE SAME(10) */ 333{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 334 335/* 42 READ SUB-CHANNEL */ 336{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 337 338/* 43 READ TOC/PMA/ATIP */ 339{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 340 341/* 44 REPORT DENSITY SUPPORT */ 342{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 343 344/* 45 PLAY AUDIO(10) */ 345{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 346 347/* 46 GET CONFIGURATION */ 348{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 349 350/* 47 PLAY AUDIO MSF */ 351{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 352 353/* 48 PLAY AUDIO TRACK INDEX */ 354{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 355 356/* 49 PLAY TRACK RELATIVE(10) */ 357{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 358 359/* 4A GET EVENT STATUS NOTIFICATION */ 360{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 361 362/* 4B PAUSE/RESUME */ 363{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 364 365/* 4C LOG SELECT */ 366{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 367 368/* 4D LOG SENSE */ 369{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 370 371/* 4E STOP PLAY/SCAN */ 372{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 373 374/* 4F */ 375{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 376 377/* 50 XDWRITE(10) */ 378{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 379 380/* 51 XPWRITE(10) */ 381{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 382 383/* 52 XDREAD(10) */ 384{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 385 386/* 53 RESERVE TRACK */ 387{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 388 389/* 54 SEND OPC INFORMATION */ 390{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 391 392/* 55 MODE SELECT(10) */ 393{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 394 CTL_CMD_FLAG_OK_ON_STOPPED | 395 CTL_CMD_FLAG_OK_ON_INOPERABLE | 396 CTL_CMD_FLAG_OK_ON_SECONDARY | 397 CTL_FLAG_DATA_OUT, 398 CTL_LUN_PAT_NONE}, 399 400/* 56 RESERVE(10) */ 401{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV | 402 CTL_CMD_FLAG_OK_ON_BOTH | 403 CTL_CMD_FLAG_OK_ON_STOPPED | 404 CTL_CMD_FLAG_OK_ON_INOPERABLE | 405 CTL_CMD_FLAG_OK_ON_SECONDARY | 406 CTL_FLAG_DATA_OUT, 407 CTL_LUN_PAT_NONE}, 408 409/* 57 RELEASE(10) */ 410{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV | 411 CTL_CMD_FLAG_OK_ON_BOTH | 412 CTL_CMD_FLAG_OK_ON_STOPPED | 413 CTL_CMD_FLAG_OK_ON_INOPERABLE | 414 CTL_CMD_FLAG_OK_ON_SECONDARY | 415 CTL_FLAG_DATA_OUT, 416 CTL_LUN_PAT_NONE}, 417 418/* 58 REPAIR TRACK */ 419{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 420 421/* 59 READ MASTER CUE */ 422{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 423 424/* 5A MODE SENSE(10) */ 425{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 426 CTL_CMD_FLAG_OK_ON_STOPPED | 427 CTL_CMD_FLAG_OK_ON_INOPERABLE | 428 CTL_CMD_FLAG_OK_ON_SECONDARY | 429 CTL_FLAG_DATA_IN, 430 CTL_LUN_PAT_NONE}, 431 432/* 5B CLOSE TRACK/SESSION */ 433{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 434 435/* 5C READ BUFFER CAPACITY */ 436{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 437 438/* 5D SEND CUE SHEET */ 439{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 440 441/* 5E PERSISTENT RESERVE IN */ 442{ctl_persistent_reserve_in, CTL_SERIDX_PRES_IN, CTL_CMD_FLAG_ALLOW_ON_RESV | 443 CTL_CMD_FLAG_OK_ON_BOTH | 444 CTL_CMD_FLAG_OK_ON_STOPPED | 445 CTL_CMD_FLAG_OK_ON_INOPERABLE | 446 CTL_CMD_FLAG_OK_ON_SECONDARY | 447 CTL_FLAG_DATA_IN | 448 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 449 CTL_LUN_PAT_NONE}, 450 451//{ctl_persistent_reserve_in, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 452 453/* 5F PERSISTENT RESERVE OUT */ 454{ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV | 455 CTL_CMD_FLAG_OK_ON_BOTH | 456 CTL_CMD_FLAG_OK_ON_STOPPED | 457 CTL_CMD_FLAG_OK_ON_INOPERABLE| 458 CTL_CMD_FLAG_OK_ON_SECONDARY | 459 CTL_FLAG_DATA_OUT | 460 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 461 CTL_LUN_PAT_NONE}, 462 463//{ctl_persistent_reserve_out, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 464 465/* 60 */ 466{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 467 468/* 61 */ 469{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 470 471/* 62 */ 472{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 473 474/* 63 */ 475{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 476 477/* 64 */ 478{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 479 480/* 65 */ 481{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 482 483/* 66 */ 484{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 485 486/* 67 */ 487{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 488 489/* 68 */ 490{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 491 492/* 69 */ 493{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 494 495/* 6A */ 496{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 497 498/* 6B */ 499{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 500 501/* 6C */ 502{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 503 504/* 6D */ 505{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 506 507/* 6E */ 508{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 509 510/* 6F */ 511{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 512 513/* 70 */ 514{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 515 516/* 71 */ 517{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 518 519/* 72 */ 520{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 521 522/* 73 */ 523{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 524 525/* 74 */ 526{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 527 528/* 75 */ 529{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 530 531/* 76 */ 532{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 533 534/* 77 */ 535{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 536 537/* 78 */ 538{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 539 540/* 79 */ 541{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 542 543/* 7A */ 544{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 545 546/* 7B */ 547{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 548 549/* 7C */ 550{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 551 552/* 7D */ 553{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 554 555/* 7E */ 556{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 557 558/* 7F */ 559{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 560 561/* 80 XDWRITE EXTENDED(16) */ 562{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 563 564/* 81 REBUILD(16) */ 565{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 566 567/* 82 REGENERATE(16) */ 568{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 569 570/* 83 EXTENDED COPY */ 571{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 572 573/* 84 RECEIVE COPY RESULTS */ 574{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 575 576/* 85 */ 577{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 578 579/* 86 ACCESS CONTROL IN */ 580{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 581 582/* 87 ACCESS CONTROL OUT */ 583{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 584 585/* 88 READ(16) */ 586{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN | 587 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 588 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE}, 589 590/* 89 */ 591{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 592 593/* 8A WRITE(16) */ 594{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 595 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 596 597/* 8B */ 598{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 599 600/* 8C READ ATTRIBUTE */ 601{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 602 603/* 8D WRITE ATTRIBUTE */ 604{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 605 606/* 8E WRITE AND VERIFY(16) */ 607{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 608 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 609 610/* 8F VERIFY(16) */ 611{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 612 613/* 90 PRE-FETCH(16) */ 614{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 615 616/* 91 SYNCHRONIZE CACHE(16) */ 617{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | 618 CTL_FLAG_DATA_NONE, 619 CTL_LUN_PAT_NONE}, 620 621/* 92 LOCK UNLOCK CACHE(16) */ 622{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 623 624/* 93 WRITE SAME(16) */ 625{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 626 627/* 94 */ 628{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 629 630/* 95 */ 631{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 632 633/* 96 */ 634{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 635 636/* 97 */ 637{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 638 639/* 98 */ 640{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 641 642/* 99 */ 643{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 644 645/* 9A */ 646{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 647 648/* 9B */ 649{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 650 651/* 9C */ 652{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 653 654/* 9D */ 655{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 656 657/* 9E SERVICE ACTION IN(16) */ 658/* XXX KDM not all service actions will be read capacity!! */ 659{ctl_service_action_in, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN | 660 CTL_CMD_FLAG_OK_ON_STOPPED | 661 CTL_CMD_FLAG_OK_ON_INOPERABLE | 662 CTL_CMD_FLAG_OK_ON_SECONDARY | 663 CTL_FLAG_DATA_IN | 664 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 665 CTL_LUN_PAT_READCAP}, 666 667/* 9F SERVICE ACTION OUT(16) */ 668{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 669 670/* A0 REPORT LUNS */ 671{ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS | 672 CTL_CMD_FLAG_ALLOW_ON_RESV | 673 CTL_CMD_FLAG_NO_SENSE | 674 CTL_CMD_FLAG_OK_ON_STOPPED | 675 CTL_CMD_FLAG_OK_ON_INOPERABLE | 676 CTL_CMD_FLAG_OK_ON_OFFLINE | 677 CTL_CMD_FLAG_OK_ON_SECONDARY | 678 CTL_FLAG_DATA_IN | 679 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 680 CTL_LUN_PAT_NONE}, 681 682/* A1 BLANK */ 683{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 684 685/* A2 SEND EVENT */ 686{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 687 688/* A3 MAINTENANCE (IN) Service Action - (0A) REPORT TARGET PORT GROUP */ 689{ctl_maintenance_in, CTL_SERIDX_MAIN_IN, CTL_CMD_FLAG_OK_ON_BOTH | 690 CTL_CMD_FLAG_OK_ON_STOPPED | 691 CTL_CMD_FLAG_OK_ON_INOPERABLE | 692 CTL_CMD_FLAG_OK_ON_SECONDARY | 693 CTL_FLAG_DATA_IN, 694 CTL_LUN_PAT_NONE}, 695 696/* A4 MAINTENANCE (OUT) */ 697{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 698 699/* A5 MOVE MEDIUM */ 700{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 701 702/* A6 EXCHANGE MEDIUM */ 703{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 704 705/* A7 MOVE MEDIUM ATTACHED */ 706{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 707 708/* A8 READ(12) */ 709{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN | 710 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 711 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE}, 712 713/* A9 PLAY TRACK RELATIVE(12) */ 714{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 715 716/* AA WRITE(12) */ 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 720/* AB SERVICE ACTION IN(12) */ 721{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 722 723/* AC ERASE(12) */ 724{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 725 726/* AD READ DVD STRUCTURE */ 727{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 728 729/* AE WRITE AND VERIFY(12) */ 730{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 731 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 732 733/* AF VERIFY(12) */ 734{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 735 736/* B0 SEARCH DATA HIGH(12) */ 737{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 738 739/* B1 SEARCH DATA EQUAL(12) */ 740{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 741 742/* B2 SEARCH DATA LOW(12) */ 743{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 744 745/* B3 SET LIMITS(12) */ 746{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 747 748/* B4 READ ELEMENT STATUS ATTACHED */ 749{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 750 751/* B5 REQUEST VOLUME ELEMENT ADDRESS */ 752{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 753 754/* B6 SEND VOLUME TAG */ 755{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 756 757/* B7 READ DEFECT DATA(12) */ 758{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 759 760/* B8 READ ELEMENT STATUS */ 761{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 762 763/* B9 READ CD MSF */ 764{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 765 766/* BA REDUNDANCY GROUP (IN) */ 767{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 768 769/* BB REDUNDANCY GROUP (OUT) */ 770{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 771 772/* BC SPARE (IN) */ 773{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 774 775/* BD SPARE (OUT) */ 776{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 777 778/* BE VOLUME SET (IN) */ 779{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 780 781/* BF VOLUME SET (OUT) */ 782{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 783 784/* C0 - ISC_SEND_MSG_SHORT */ 785//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 786{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE, 787 CTL_LUN_PAT_NONE}, 788 789/* C1 - ISC_SEND_MSG */ 790//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 791{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT, 792 CTL_LUN_PAT_NONE}, 793 794/* C2 - ISC_WRITE */ 795//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 796{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT, 797 CTL_LUN_PAT_NONE}, 798 799/* C3 - ISC_READ */ 800//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 801{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN, 802 CTL_LUN_PAT_NONE}, 803 804/* C4 */ 805{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 806 807/* C5 */ 808{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 809 810/* C6 */ 811{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 812 813/* C7 */ 814{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 815 816/* C8 */ 817{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 818 819/* C9 */ 820{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 821 822/* CA */ 823{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 824 825/* CB */ 826{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 827 828/* CC */ 829{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 830 831/* CD */ 832{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 833 834/* CE */ 835{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 836 837/* CF */ 838{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 839 840/* D0 */ 841{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 842 843/* D1 */ 844{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 845 846/* D2 */ 847{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 848 849/* D3 */ 850{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 851 852/* D4 */ 853{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 854 855/* D5 */ 856{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 857 858/* D6 */ 859{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 860 861/* D7 */ 862{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 863 864/* D8 */ 865{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 866 867/* D9 */ 868{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 869 870/* DA */ 871{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 872 873/* DB */ 874{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 875 876/* DC */ 877{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 878 879/* DD */ 880{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 881 882/* DE */ 883{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 884 885/* DF */ 886{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 887 888/* E0 */ 889{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 890 891/* E1 */ 892{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 893 894/* E2 */ 895{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 896 897/* E3 */ 898{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 899 900/* E4 */ 901{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 902 903/* E5 */ 904{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 905 906/* E6 */ 907{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 908 909/* E7 */ 910{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 911 912/* E8 */ 913{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 914 915/* E9 */ 916{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 917 918/* EA */ 919{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 920 921/* EB */ 922{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 923 924/* EC */ 925{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 926 927/* ED */ 928{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 929 930/* EE */ 931{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 932 933/* EF */ 934{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 935 936/* F0 */ 937{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 938 939/* F1 */ 940{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 941 942/* F2 */ 943{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 944 945/* F3 */ 946{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 947 948/* F4 */ 949{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 950 951/* F5 */ 952{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 953 954/* F6 */ 955{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 956 957/* F7 */ 958{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 959 960/* F8 */ 961{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 962 963/* F9 */ 964{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 965 966/* FA */ 967{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 968 969/* FB */ 970{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 971 972/* FC */ 973{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 974 975/* FD */ 976{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 977 978/* FE */ 979{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 980 981/* FF */ 982{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE} 983 984}; 985