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 {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