ctl_cmd_table.c revision 265634
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 265634 2014-05-08 07:00:45Z 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 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{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN | 335 CTL_FLAG_DATA_OUT, 336 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 337 338/* 42 READ SUB-CHANNEL / UNMAP */ 339{ctl_unmap, CTL_SERIDX_UNMAP, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_OUT, 340 CTL_LUN_PAT_WRITE}, 341 342/* 43 READ TOC/PMA/ATIP */ 343{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 344 345/* 44 REPORT DENSITY SUPPORT */ 346{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 347 348/* 45 PLAY AUDIO(10) */ 349{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 350 351/* 46 GET CONFIGURATION */ 352{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 353 354/* 47 PLAY AUDIO MSF */ 355{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 356 357/* 48 PLAY AUDIO TRACK INDEX */ 358{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 359 360/* 49 PLAY TRACK RELATIVE(10) */ 361{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 362 363/* 4A GET EVENT STATUS NOTIFICATION */ 364{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 365 366/* 4B PAUSE/RESUME */ 367{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 368 369/* 4C LOG SELECT */ 370{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 371 372/* 4D LOG SENSE */ 373{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 374 375/* 4E STOP PLAY/SCAN */ 376{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 377 378/* 4F */ 379{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 380 381/* 50 XDWRITE(10) */ 382{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 383 384/* 51 XPWRITE(10) */ 385{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 386 387/* 52 XDREAD(10) */ 388{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 389 390/* 53 RESERVE TRACK */ 391{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 392 393/* 54 SEND OPC INFORMATION */ 394{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 395 396/* 55 MODE SELECT(10) */ 397{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 398 CTL_CMD_FLAG_OK_ON_STOPPED | 399 CTL_CMD_FLAG_OK_ON_INOPERABLE | 400 CTL_CMD_FLAG_OK_ON_SECONDARY | 401 CTL_FLAG_DATA_OUT, 402 CTL_LUN_PAT_NONE}, 403 404/* 56 RESERVE(10) */ 405{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV | 406 CTL_CMD_FLAG_OK_ON_BOTH | 407 CTL_CMD_FLAG_OK_ON_STOPPED | 408 CTL_CMD_FLAG_OK_ON_INOPERABLE | 409 CTL_CMD_FLAG_OK_ON_SECONDARY | 410 CTL_FLAG_DATA_OUT, 411 CTL_LUN_PAT_NONE}, 412 413/* 57 RELEASE(10) */ 414{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV | 415 CTL_CMD_FLAG_OK_ON_BOTH | 416 CTL_CMD_FLAG_OK_ON_STOPPED | 417 CTL_CMD_FLAG_OK_ON_INOPERABLE | 418 CTL_CMD_FLAG_OK_ON_SECONDARY | 419 CTL_FLAG_DATA_OUT, 420 CTL_LUN_PAT_NONE}, 421 422/* 58 REPAIR TRACK */ 423{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 424 425/* 59 READ MASTER CUE */ 426{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 427 428/* 5A MODE SENSE(10) */ 429{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 430 CTL_CMD_FLAG_OK_ON_STOPPED | 431 CTL_CMD_FLAG_OK_ON_INOPERABLE | 432 CTL_CMD_FLAG_OK_ON_SECONDARY | 433 CTL_FLAG_DATA_IN, 434 CTL_LUN_PAT_NONE}, 435 436/* 5B CLOSE TRACK/SESSION */ 437{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 438 439/* 5C READ BUFFER CAPACITY */ 440{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 441 442/* 5D SEND CUE SHEET */ 443{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 444 445/* 5E PERSISTENT RESERVE IN */ 446{ctl_persistent_reserve_in, CTL_SERIDX_PRES_IN, CTL_CMD_FLAG_ALLOW_ON_RESV | 447 CTL_CMD_FLAG_OK_ON_BOTH | 448 CTL_CMD_FLAG_OK_ON_STOPPED | 449 CTL_CMD_FLAG_OK_ON_INOPERABLE | 450 CTL_CMD_FLAG_OK_ON_SECONDARY | 451 CTL_FLAG_DATA_IN | 452 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 453 CTL_LUN_PAT_NONE}, 454 455//{ctl_persistent_reserve_in, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 456 457/* 5F PERSISTENT RESERVE OUT */ 458{ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV | 459 CTL_CMD_FLAG_OK_ON_BOTH | 460 CTL_CMD_FLAG_OK_ON_STOPPED | 461 CTL_CMD_FLAG_OK_ON_INOPERABLE| 462 CTL_CMD_FLAG_OK_ON_SECONDARY | 463 CTL_FLAG_DATA_OUT | 464 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 465 CTL_LUN_PAT_NONE}, 466 467//{ctl_persistent_reserve_out, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 468 469/* 60 */ 470{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 471 472/* 61 */ 473{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 474 475/* 62 */ 476{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 477 478/* 63 */ 479{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 480 481/* 64 */ 482{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 483 484/* 65 */ 485{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 486 487/* 66 */ 488{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 489 490/* 67 */ 491{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 492 493/* 68 */ 494{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 495 496/* 69 */ 497{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 498 499/* 6A */ 500{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 501 502/* 6B */ 503{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 504 505/* 6C */ 506{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 507 508/* 6D */ 509{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 510 511/* 6E */ 512{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 513 514/* 6F */ 515{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 516 517/* 70 */ 518{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 519 520/* 71 */ 521{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 522 523/* 72 */ 524{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 525 526/* 73 */ 527{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 528 529/* 74 */ 530{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 531 532/* 75 */ 533{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 534 535/* 76 */ 536{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 537 538/* 77 */ 539{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 540 541/* 78 */ 542{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 543 544/* 79 */ 545{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 546 547/* 7A */ 548{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 549 550/* 7B */ 551{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 552 553/* 7C */ 554{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 555 556/* 7D */ 557{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 558 559/* 7E */ 560{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 561 562/* 7F */ 563{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 564 565/* 80 XDWRITE EXTENDED(16) */ 566{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 567 568/* 81 REBUILD(16) */ 569{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 570 571/* 82 REGENERATE(16) */ 572{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 573 574/* 83 EXTENDED COPY */ 575{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 576 577/* 84 RECEIVE COPY RESULTS */ 578{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 579 580/* 85 */ 581{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 582 583/* 86 ACCESS CONTROL IN */ 584{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 585 586/* 87 ACCESS CONTROL OUT */ 587{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 588 589/* 88 READ(16) */ 590{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN | 591 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 592 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE}, 593 594/* 89 */ 595{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 596 597/* 8A WRITE(16) */ 598{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 599 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 600 601/* 8B */ 602{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 603 604/* 8C READ ATTRIBUTE */ 605{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 606 607/* 8D WRITE ATTRIBUTE */ 608{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 609 610/* 8E WRITE AND VERIFY(16) */ 611{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 612 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 613 614/* 8F VERIFY(16) */ 615{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 616 617/* 90 PRE-FETCH(16) */ 618{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 619 620/* 91 SYNCHRONIZE CACHE(16) */ 621{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | 622 CTL_FLAG_DATA_NONE, 623 CTL_LUN_PAT_NONE}, 624 625/* 92 LOCK UNLOCK CACHE(16) */ 626{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 627 628/* 93 WRITE SAME(16) */ 629{ctl_write_same, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN | 630 CTL_FLAG_DATA_OUT, 631 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 632 633/* 94 */ 634{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 635 636/* 95 */ 637{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 638 639/* 96 */ 640{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 641 642/* 97 */ 643{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 644 645/* 98 */ 646{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 647 648/* 99 */ 649{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 650 651/* 9A */ 652{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 653 654/* 9B */ 655{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 656 657/* 9C */ 658{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 659 660/* 9D */ 661{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 662 663/* 9E SERVICE ACTION IN(16) */ 664/* XXX KDM not all service actions will be read capacity!! */ 665{ctl_service_action_in, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN | 666 CTL_CMD_FLAG_OK_ON_STOPPED | 667 CTL_CMD_FLAG_OK_ON_INOPERABLE | 668 CTL_CMD_FLAG_OK_ON_SECONDARY | 669 CTL_FLAG_DATA_IN | 670 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 671 CTL_LUN_PAT_READCAP}, 672 673/* 9F SERVICE ACTION OUT(16) */ 674{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 675 676/* A0 REPORT LUNS */ 677{ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS | 678 CTL_CMD_FLAG_ALLOW_ON_RESV | 679 CTL_CMD_FLAG_NO_SENSE | 680 CTL_CMD_FLAG_OK_ON_STOPPED | 681 CTL_CMD_FLAG_OK_ON_INOPERABLE | 682 CTL_CMD_FLAG_OK_ON_OFFLINE | 683 CTL_CMD_FLAG_OK_ON_SECONDARY | 684 CTL_FLAG_DATA_IN | 685 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 686 CTL_LUN_PAT_NONE}, 687 688/* A1 BLANK */ 689{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 690 691/* A2 SEND EVENT */ 692{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 693 694/* A3 MAINTENANCE (IN) Service Action - (0A) REPORT TARGET PORT GROUP */ 695{ctl_maintenance_in, CTL_SERIDX_MAIN_IN, CTL_CMD_FLAG_OK_ON_BOTH | 696 CTL_CMD_FLAG_OK_ON_STOPPED | 697 CTL_CMD_FLAG_OK_ON_INOPERABLE | 698 CTL_CMD_FLAG_OK_ON_SECONDARY | 699 CTL_FLAG_DATA_IN, 700 CTL_LUN_PAT_NONE}, 701 702/* A4 MAINTENANCE (OUT) */ 703{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 704 705/* A5 MOVE MEDIUM */ 706{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 707 708/* A6 EXCHANGE MEDIUM */ 709{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 710 711/* A7 MOVE MEDIUM ATTACHED */ 712{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 713 714/* A8 READ(12) */ 715{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN | 716 CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 717 CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE}, 718 719/* A9 PLAY TRACK RELATIVE(12) */ 720{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 721 722/* AA WRITE(12) */ 723{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 724 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 725 726/* AB SERVICE ACTION IN(12) */ 727{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 728 729/* AC ERASE(12) */ 730{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 731 732/* AD READ DVD STRUCTURE */ 733{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 734 735/* AE WRITE AND VERIFY(12) */ 736{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 737 CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 738 739/* AF VERIFY(12) */ 740{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 741 742/* B0 SEARCH DATA HIGH(12) */ 743{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 744 745/* B1 SEARCH DATA EQUAL(12) */ 746{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 747 748/* B2 SEARCH DATA LOW(12) */ 749{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 750 751/* B3 SET LIMITS(12) */ 752{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 753 754/* B4 READ ELEMENT STATUS ATTACHED */ 755{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 756 757/* B5 REQUEST VOLUME ELEMENT ADDRESS */ 758{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 759 760/* B6 SEND VOLUME TAG */ 761{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 762 763/* B7 READ DEFECT DATA(12) */ 764{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 765 766/* B8 READ ELEMENT STATUS */ 767{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 768 769/* B9 READ CD MSF */ 770{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 771 772/* BA REDUNDANCY GROUP (IN) */ 773{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 774 775/* BB REDUNDANCY GROUP (OUT) */ 776{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 777 778/* BC SPARE (IN) */ 779{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 780 781/* BD SPARE (OUT) */ 782{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 783 784/* BE VOLUME SET (IN) */ 785{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 786 787/* BF VOLUME SET (OUT) */ 788{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 789 790/* C0 - ISC_SEND_MSG_SHORT */ 791//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 792{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE, 793 CTL_LUN_PAT_NONE}, 794 795/* C1 - ISC_SEND_MSG */ 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/* C2 - ISC_WRITE */ 801//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 802{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT, 803 CTL_LUN_PAT_NONE}, 804 805/* C3 - ISC_READ */ 806//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 807{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN, 808 CTL_LUN_PAT_NONE}, 809 810/* C4 */ 811{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 812 813/* C5 */ 814{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 815 816/* C6 */ 817{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 818 819/* C7 */ 820{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 821 822/* C8 */ 823{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 824 825/* C9 */ 826{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 827 828/* CA */ 829{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 830 831/* CB */ 832{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 833 834/* CC */ 835{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 836 837/* CD */ 838{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 839 840/* CE */ 841{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 842 843/* CF */ 844{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 845 846/* D0 */ 847{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 848 849/* D1 */ 850{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 851 852/* D2 */ 853{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 854 855/* D3 */ 856{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 857 858/* D4 */ 859{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 860 861/* D5 */ 862{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 863 864/* D6 */ 865{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 866 867/* D7 */ 868{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 869 870/* D8 */ 871{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 872 873/* D9 */ 874{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 875 876/* DA */ 877{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 878 879/* DB */ 880{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 881 882/* DC */ 883{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 884 885/* DD */ 886{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 887 888/* DE */ 889{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 890 891/* DF */ 892{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 893 894/* E0 */ 895{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 896 897/* E1 */ 898{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 899 900/* E2 */ 901{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 902 903/* E3 */ 904{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 905 906/* E4 */ 907{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 908 909/* E5 */ 910{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 911 912/* E6 */ 913{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 914 915/* E7 */ 916{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 917 918/* E8 */ 919{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 920 921/* E9 */ 922{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 923 924/* EA */ 925{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 926 927/* EB */ 928{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 929 930/* EC */ 931{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 932 933/* ED */ 934{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 935 936/* EE */ 937{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 938 939/* EF */ 940{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 941 942/* F0 */ 943{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 944 945/* F1 */ 946{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 947 948/* F2 */ 949{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 950 951/* F3 */ 952{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 953 954/* F4 */ 955{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 956 957/* F5 */ 958{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 959 960/* F6 */ 961{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 962 963/* F7 */ 964{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 965 966/* F8 */ 967{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 968 969/* F9 */ 970{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 971 972/* FA */ 973{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 974 975/* FB */ 976{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 977 978/* FC */ 979{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 980 981/* FD */ 982{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 983 984/* FE */ 985{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 986 987/* FF */ 988{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE} 989 990}; 991