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