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