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 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 */ 63 struct 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