ctl_cmd_table.c revision 229997
1229997Sken/*- 2229997Sken * Copyright (c) 2003, 2004, 2005, 2009 Silicon Graphics International Corp. 3229997Sken * All rights reserved. 4229997Sken * 5229997Sken * Redistribution and use in source and binary forms, with or without 6229997Sken * modification, are permitted provided that the following conditions 7229997Sken * are met: 8229997Sken * 1. Redistributions of source code must retain the above copyright 9229997Sken * notice, this list of conditions, and the following disclaimer, 10229997Sken * without modification. 11229997Sken * 2. Redistributions in binary form must reproduce at minimum a disclaimer 12229997Sken * substantially similar to the "NO WARRANTY" disclaimer below 13229997Sken * ("Disclaimer") and any redistribution must be conditioned upon 14229997Sken * including a substantially similar Disclaimer requirement for further 15229997Sken * binary redistribution. 16229997Sken * 17229997Sken * NO WARRANTY 18229997Sken * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19229997Sken * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20229997Sken * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 21229997Sken * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22229997Sken * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23229997Sken * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24229997Sken * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25229997Sken * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26229997Sken * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 27229997Sken * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28229997Sken * POSSIBILITY OF SUCH DAMAGES. 29229997Sken * 30229997Sken * $Id: //depot/users/kenm/FreeBSD-test2/sys/cam/ctl/ctl_cmd_table.c#4 $ 31229997Sken * $FreeBSD: head/sys/cam/ctl/ctl_cmd_table.c 229997 2012-01-12 00:34:33Z ken $ 32229997Sken */ 33229997Sken/* 34229997Sken * CAM Target Layer command table. 35229997Sken * 36229997Sken * Author: Ken Merry <ken@FreeBSD.org>, Kim Le 37229997Sken */ 38229997Sken 39229997Sken#include <sys/cdefs.h> 40229997Sken#include <sys/param.h> 41229997Sken#include <sys/systm.h> 42229997Sken#include <sys/kernel.h> 43229997Sken#include <sys/types.h> 44229997Sken#include <sys/malloc.h> 45229997Sken#include <sys/condvar.h> 46229997Sken#include <sys/queue.h> 47233963Sken 48229997Sken#include <cam/scsi/scsi_all.h> 49229997Sken#include <cam/scsi/scsi_da.h> 50229997Sken#include <cam/ctl/ctl_io.h> 51229997Sken#include <cam/ctl/ctl.h> 52229997Sken#include <cam/ctl/ctl_frontend.h> 53229997Sken#include <cam/ctl/ctl_backend.h> 54229997Sken#include <cam/ctl/ctl_frontend_internal.h> 55229997Sken#include <cam/ctl/ctl_ioctl.h> 56229997Sken#include <cam/ctl/ctl_ha.h> 57229997Sken#include <cam/ctl/ctl_private.h> 58229997Sken 59229997Sken/* 60229997Sken * Whenever support for a new command is added, it should be added to this 61229997Sken * table. 62229997Sken */ 63229997Skenstruct ctl_cmd_entry ctl_cmd_table[] = 64229997Sken{ 65229997Sken/* 00 TEST UNIT READY */ 66229997Sken{ctl_tur, CTL_SERIDX_TUR, CTL_CMD_FLAG_OK_ON_BOTH | 67229997Sken CTL_FLAG_DATA_NONE | 68229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 69229997Sken CTL_LUN_PAT_TUR}, 70229997Sken 71229997Sken/* 01 REWIND */ 72229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 73229997Sken 74229997Sken/* 02 */ 75229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 76229997Sken 77229997Sken/* 03 REQUEST SENSE */ 78229997Sken{ctl_request_sense, CTL_SERIDX_RQ_SNS, CTL_FLAG_DATA_IN | 79229997Sken CTL_CMD_FLAG_OK_ON_ALL_LUNS | 80229997Sken CTL_CMD_FLAG_ALLOW_ON_RESV | 81229997Sken CTL_CMD_FLAG_NO_SENSE | 82229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 83229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 84229997Sken CTL_CMD_FLAG_OK_ON_OFFLINE | 85229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 86229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 87229997Sken CTL_LUN_PAT_NONE}, 88229997Sken 89229997Sken/* 04 FORMAT UNIT */ 90229997Sken{ctl_format, CTL_SERIDX_FORMAT, CTL_CMD_FLAG_OK_ON_SLUN | 91229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 92229997Sken CTL_FLAG_DATA_OUT, 93229997Sken CTL_LUN_PAT_NONE}, 94229997Sken 95229997Sken/* 05 READ BLOCK LIMITS */ 96229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 97229997Sken 98229997Sken/* 06 */ 99229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 100229997Sken 101229997Sken/* 07 REASSIGN BLOCKS */ 102229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 103229997Sken 104229997Sken/* 08 READ(6) */ 105229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | 106229997Sken CTL_FLAG_DATA_IN | 107229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 108229997Sken CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE}, 109229997Sken 110229997Sken/* 09 */ 111229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 112229997Sken 113229997Sken/* 0A WRITE(6) */ 114229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN | 115229997Sken CTL_FLAG_DATA_OUT, 116229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 117229997Sken 118229997Sken/* 0B SEEK(6) */ 119229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 120229997Sken 121229997Sken/* 0C */ 122229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 123229997Sken 124229997Sken/* 0D */ 125229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 126229997Sken 127229997Sken/* 0E */ 128229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 129229997Sken 130229997Sken/* 0F READ REVERSE(6) */ 131229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 132229997Sken 133229997Sken/* 10 WRITE FILEMARKS(6) */ 134229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 135229997Sken 136229997Sken/* 11 SPACE(6) */ 137229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 138229997Sken 139229997Sken/* 12 INQUIRY */ 140229997Sken{ctl_inquiry, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS | 141229997Sken CTL_CMD_FLAG_ALLOW_ON_RESV | 142229997Sken CTL_CMD_FLAG_NO_SENSE | 143229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 144229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 145229997Sken CTL_CMD_FLAG_OK_ON_OFFLINE | 146229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 147229997Sken CTL_FLAG_DATA_IN | 148229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 149229997Sken CTL_LUN_PAT_NONE}, 150229997Sken 151229997Sken/* 13 */ 152229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 153229997Sken 154229997Sken/* 14 RECOVER BUFFERED DATA */ 155229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 156229997Sken 157229997Sken/* 15 MODE SELECT(6) */ 158229997Sken{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 159229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 160229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 161229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 162229997Sken CTL_FLAG_DATA_OUT, 163229997Sken CTL_LUN_PAT_NONE}, 164229997Sken 165229997Sken/* 16 RESERVE(6) */ 166229997Sken{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV | 167229997Sken CTL_CMD_FLAG_OK_ON_BOTH | 168229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 169229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 170229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 171229997Sken CTL_FLAG_DATA_OUT, 172229997Sken CTL_LUN_PAT_NONE}, 173229997Sken 174229997Sken/* 17 RELEASE(6) */ 175229997Sken{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV | 176229997Sken CTL_CMD_FLAG_OK_ON_BOTH | 177229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 178229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 179229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 180229997Sken CTL_FLAG_DATA_NONE, 181229997Sken CTL_LUN_PAT_NONE}, 182229997Sken 183229997Sken/* 18 COPY */ 184229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 185229997Sken 186229997Sken/* 19 ERASE(6) */ 187229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 188229997Sken 189229997Sken/* 1A MODE SENSE(6) */ 190229997Sken{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 191229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 192229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 193229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 194229997Sken CTL_FLAG_DATA_IN, 195229997Sken CTL_LUN_PAT_NONE}, 196229997Sken 197229997Sken/* 1B START STOP UNIT */ 198229997Sken{ctl_start_stop, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | 199229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 200229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 201229997Sken CTL_CMD_FLAG_OK_ON_OFFLINE | 202229997Sken CTL_FLAG_DATA_NONE | 203229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 204229997Sken CTL_LUN_PAT_NONE}, 205229997Sken 206229997Sken/* 1C RECEIVE DIAGNOSTIC RESULTS */ 207229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 208229997Sken 209229997Sken/* 1D SEND DIAGNOSTIC */ 210229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 211229997Sken 212229997Sken/* 1E PREVENT ALLOW MEDIUM REMOVAL */ 213229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 214229997Sken 215229997Sken/* 1F */ 216229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 217229997Sken 218229997Sken/* 20 */ 219229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 220229997Sken 221229997Sken/* 21 */ 222229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 223229997Sken 224229997Sken/* 22 */ 225229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 226229997Sken 227229997Sken/* 23 */ 228229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 229229997Sken 230229997Sken/* 24 SET WINDOW */ 231229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 232229997Sken 233229997Sken/* 25 READ CAPACITY(10) */ 234229997Sken{ctl_read_capacity, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN| 235229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 236229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 237229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 238229997Sken CTL_FLAG_DATA_IN | 239229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 240229997Sken CTL_LUN_PAT_READCAP}, 241229997Sken 242229997Sken/* 26 */ 243229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 244229997Sken 245229997Sken/* 27 */ 246229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 247229997Sken 248229997Sken/* 28 READ(10) */ 249229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | 250229997Sken CTL_FLAG_DATA_IN | 251229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 252229997Sken CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE}, 253229997Sken 254229997Sken/* 29 READ GENERATION */ 255229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 256229997Sken 257229997Sken/* 2A WRITE(10) */ 258229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 259229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 260229997Sken 261229997Sken/* 2B SEEK(10) */ 262229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 263229997Sken 264229997Sken/* 2C ERASE(10) */ 265229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 266229997Sken 267229997Sken/* 2D READ UPDATED BLOCK */ 268229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 269229997Sken 270229997Sken/* 2E WRITE AND VERIFY(10) */ 271229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 272229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 273229997Sken 274229997Sken/* 2F VERIFY(10) */ 275229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 276229997Sken 277229997Sken/* 30 SEARCH DATA HIGH(10) */ 278229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 279229997Sken 280229997Sken/* 31 SEARCH DATA EQUAL(10) */ 281229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 282229997Sken 283229997Sken/* 32 SEARCH DATA LOW(10) */ 284229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 285229997Sken 286229997Sken/* 33 SET LIMITS(10) */ 287229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 288229997Sken 289229997Sken/* 34 PRE-FETCH(10) */ 290229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 291229997Sken 292229997Sken/* 35 SYNCHRONIZE CACHE(10) */ 293229997Sken{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | 294229997Sken CTL_FLAG_DATA_NONE, 295229997Sken CTL_LUN_PAT_NONE}, 296229997Sken 297229997Sken/* 36 LOCK UNLOCK CACHE(10) */ 298229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 299229997Sken 300229997Sken/* 37 READ DEFECT DATA(10) */ 301229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 302229997Sken 303229997Sken/* 38 MEDIUM SCAN */ 304229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 305229997Sken 306229997Sken/* 39 COMPARE */ 307229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 308229997Sken 309229997Sken/* 3A COPY AND VERIFY */ 310229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 311229997Sken 312229997Sken/* 3B WRITE BUFFER */ 313229997Sken{ctl_write_buffer, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_PROC | 314229997Sken CTL_FLAG_DATA_OUT, 315229997Sken CTL_LUN_PAT_NONE}, 316229997Sken 317229997Sken/* 3C READ BUFFER */ 318229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 319229997Sken 320229997Sken/* 3D UPDATE BLOCK */ 321229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 322229997Sken 323229997Sken/* 3E READ LONG */ 324229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 325229997Sken 326229997Sken/* 3F WRITE LONG */ 327229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 328229997Sken 329229997Sken/* 40 CHANGE DEFINITION */ 330229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 331229997Sken 332229997Sken/* 41 WRITE SAME(10) */ 333229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 334265634Smav 335265634Smav/* 42 READ SUB-CHANNEL */ 336265634Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 337229997Sken 338265634Smav/* 43 READ TOC/PMA/ATIP */ 339265634Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 340265634Smav 341229997Sken/* 44 REPORT DENSITY SUPPORT */ 342229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 343229997Sken 344229997Sken/* 45 PLAY AUDIO(10) */ 345229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 346229997Sken 347229997Sken/* 46 GET CONFIGURATION */ 348229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 349229997Sken 350229997Sken/* 47 PLAY AUDIO MSF */ 351229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 352229997Sken 353229997Sken/* 48 PLAY AUDIO TRACK INDEX */ 354229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 355229997Sken 356229997Sken/* 49 PLAY TRACK RELATIVE(10) */ 357229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 358229997Sken 359229997Sken/* 4A GET EVENT STATUS NOTIFICATION */ 360229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 361229997Sken 362229997Sken/* 4B PAUSE/RESUME */ 363229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 364229997Sken 365229997Sken/* 4C LOG SELECT */ 366229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 367229997Sken 368229997Sken/* 4D LOG SENSE */ 369229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 370229997Sken 371229997Sken/* 4E STOP PLAY/SCAN */ 372229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 373229997Sken 374229997Sken/* 4F */ 375229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 376229997Sken 377229997Sken/* 50 XDWRITE(10) */ 378229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 379229997Sken 380229997Sken/* 51 XPWRITE(10) */ 381229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 382229997Sken 383229997Sken/* 52 XDREAD(10) */ 384229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 385229997Sken 386229997Sken/* 53 RESERVE TRACK */ 387229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 388229997Sken 389229997Sken/* 54 SEND OPC INFORMATION */ 390229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 391229997Sken 392229997Sken/* 55 MODE SELECT(10) */ 393229997Sken{ctl_mode_select, CTL_SERIDX_MD_SEL, CTL_CMD_FLAG_OK_ON_BOTH | 394229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 395229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 396229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 397229997Sken CTL_FLAG_DATA_OUT, 398229997Sken CTL_LUN_PAT_NONE}, 399229997Sken 400229997Sken/* 56 RESERVE(10) */ 401229997Sken{ctl_scsi_reserve, CTL_SERIDX_RESV, CTL_CMD_FLAG_ALLOW_ON_RESV | 402229997Sken CTL_CMD_FLAG_OK_ON_BOTH | 403229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 404229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 405229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 406229997Sken CTL_FLAG_DATA_OUT, 407229997Sken CTL_LUN_PAT_NONE}, 408229997Sken 409229997Sken/* 57 RELEASE(10) */ 410229997Sken{ctl_scsi_release, CTL_SERIDX_REL, CTL_CMD_FLAG_ALLOW_ON_RESV | 411229997Sken CTL_CMD_FLAG_OK_ON_BOTH | 412229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 413229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 414229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 415229997Sken CTL_FLAG_DATA_OUT, 416229997Sken CTL_LUN_PAT_NONE}, 417229997Sken 418229997Sken/* 58 REPAIR TRACK */ 419229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 420229997Sken 421229997Sken/* 59 READ MASTER CUE */ 422229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 423229997Sken 424229997Sken/* 5A MODE SENSE(10) */ 425229997Sken{ctl_mode_sense, CTL_SERIDX_MD_SNS, CTL_CMD_FLAG_OK_ON_BOTH | 426229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 427229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 428229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 429229997Sken CTL_FLAG_DATA_IN, 430229997Sken CTL_LUN_PAT_NONE}, 431229997Sken 432229997Sken/* 5B CLOSE TRACK/SESSION */ 433229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 434229997Sken 435229997Sken/* 5C READ BUFFER CAPACITY */ 436229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 437229997Sken 438229997Sken/* 5D SEND CUE SHEET */ 439229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 440229997Sken 441229997Sken/* 5E PERSISTENT RESERVE IN */ 442229997Sken{ctl_persistent_reserve_in, CTL_SERIDX_PRES_IN, CTL_CMD_FLAG_ALLOW_ON_RESV | 443229997Sken CTL_CMD_FLAG_OK_ON_BOTH | 444229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 445229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 446229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 447229997Sken CTL_FLAG_DATA_IN | 448229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 449229997Sken CTL_LUN_PAT_NONE}, 450229997Sken 451229997Sken//{ctl_persistent_reserve_in, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 452229997Sken 453229997Sken/* 5F PERSISTENT RESERVE OUT */ 454229997Sken{ctl_persistent_reserve_out, CTL_SERIDX_PRES_OUT, CTL_CMD_FLAG_ALLOW_ON_RESV | 455229997Sken CTL_CMD_FLAG_OK_ON_BOTH | 456229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 457229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE| 458229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 459229997Sken CTL_FLAG_DATA_OUT | 460229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 461229997Sken CTL_LUN_PAT_NONE}, 462229997Sken 463229997Sken//{ctl_persistent_reserve_out, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 464229997Sken 465229997Sken/* 60 */ 466229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 467229997Sken 468229997Sken/* 61 */ 469229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 470229997Sken 471229997Sken/* 62 */ 472229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 473229997Sken 474229997Sken/* 63 */ 475229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 476229997Sken 477229997Sken/* 64 */ 478229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 479229997Sken 480229997Sken/* 65 */ 481229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 482229997Sken 483229997Sken/* 66 */ 484229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 485229997Sken 486229997Sken/* 67 */ 487229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 488229997Sken 489229997Sken/* 68 */ 490229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 491229997Sken 492229997Sken/* 69 */ 493229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 494229997Sken 495229997Sken/* 6A */ 496229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 497229997Sken 498229997Sken/* 6B */ 499229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 500229997Sken 501229997Sken/* 6C */ 502229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 503229997Sken 504229997Sken/* 6D */ 505229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 506229997Sken 507229997Sken/* 6E */ 508229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 509229997Sken 510229997Sken/* 6F */ 511229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 512229997Sken 513229997Sken/* 70 */ 514229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 515229997Sken 516229997Sken/* 71 */ 517229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 518229997Sken 519229997Sken/* 72 */ 520229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 521229997Sken 522229997Sken/* 73 */ 523229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 524229997Sken 525229997Sken/* 74 */ 526229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 527229997Sken 528229997Sken/* 75 */ 529229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 530229997Sken 531229997Sken/* 76 */ 532229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 533229997Sken 534229997Sken/* 77 */ 535229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 536229997Sken 537229997Sken/* 78 */ 538229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 539229997Sken 540229997Sken/* 79 */ 541229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 542229997Sken 543229997Sken/* 7A */ 544229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 545229997Sken 546229997Sken/* 7B */ 547229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 548229997Sken 549229997Sken/* 7C */ 550229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 551229997Sken 552229997Sken/* 7D */ 553229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 554229997Sken 555229997Sken/* 7E */ 556229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 557229997Sken 558229997Sken/* 7F */ 559229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 560229997Sken 561229997Sken/* 80 XDWRITE EXTENDED(16) */ 562229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 563229997Sken 564229997Sken/* 81 REBUILD(16) */ 565229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 566229997Sken 567229997Sken/* 82 REGENERATE(16) */ 568229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 569229997Sken 570229997Sken/* 83 EXTENDED COPY */ 571229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 572229997Sken 573229997Sken/* 84 RECEIVE COPY RESULTS */ 574229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 575229997Sken 576229997Sken/* 85 */ 577229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 578229997Sken 579229997Sken/* 86 ACCESS CONTROL IN */ 580229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 581229997Sken 582229997Sken/* 87 ACCESS CONTROL OUT */ 583229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 584229997Sken 585229997Sken/* 88 READ(16) */ 586229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN | 587229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 588229997Sken CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE}, 589229997Sken 590229997Sken/* 89 */ 591229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 592229997Sken 593229997Sken/* 8A WRITE(16) */ 594229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 595229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 596229997Sken 597229997Sken/* 8B */ 598229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 599229997Sken 600229997Sken/* 8C READ ATTRIBUTE */ 601229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 602229997Sken 603229997Sken/* 8D WRITE ATTRIBUTE */ 604229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 605229997Sken 606229997Sken/* 8E WRITE AND VERIFY(16) */ 607229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 608229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 609229997Sken 610229997Sken/* 8F VERIFY(16) */ 611229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 612229997Sken 613229997Sken/* 90 PRE-FETCH(16) */ 614229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 615229997Sken 616229997Sken/* 91 SYNCHRONIZE CACHE(16) */ 617229997Sken{ctl_sync_cache, CTL_SERIDX_START, CTL_CMD_FLAG_OK_ON_SLUN | 618229997Sken CTL_FLAG_DATA_NONE, 619229997Sken CTL_LUN_PAT_NONE}, 620229997Sken 621229997Sken/* 92 LOCK UNLOCK CACHE(16) */ 622229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 623229997Sken 624229997Sken/* 93 WRITE SAME(16) */ 625229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 626229997Sken 627229997Sken/* 94 */ 628229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 629265634Smav 630265634Smav/* 95 */ 631265634Smav{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 632229997Sken 633229997Sken/* 96 */ 634229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 635229997Sken 636229997Sken/* 97 */ 637229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 638229997Sken 639229997Sken/* 98 */ 640229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 641229997Sken 642229997Sken/* 99 */ 643229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 644229997Sken 645229997Sken/* 9A */ 646229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 647229997Sken 648229997Sken/* 9B */ 649229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 650229997Sken 651229997Sken/* 9C */ 652229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 653229997Sken 654229997Sken/* 9D */ 655229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 656229997Sken 657229997Sken/* 9E SERVICE ACTION IN(16) */ 658229997Sken/* XXX KDM not all service actions will be read capacity!! */ 659229997Sken{ctl_service_action_in, CTL_SERIDX_RD_CAP, CTL_CMD_FLAG_OK_ON_SLUN | 660229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 661229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 662229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 663229997Sken CTL_FLAG_DATA_IN | 664229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 665229997Sken CTL_LUN_PAT_READCAP}, 666229997Sken 667229997Sken/* 9F SERVICE ACTION OUT(16) */ 668229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 669229997Sken 670229997Sken/* A0 REPORT LUNS */ 671229997Sken{ctl_report_luns, CTL_SERIDX_INQ, CTL_CMD_FLAG_OK_ON_ALL_LUNS | 672229997Sken CTL_CMD_FLAG_ALLOW_ON_RESV | 673229997Sken CTL_CMD_FLAG_NO_SENSE | 674229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 675229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 676229997Sken CTL_CMD_FLAG_OK_ON_OFFLINE | 677229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 678229997Sken CTL_FLAG_DATA_IN | 679229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 680229997Sken CTL_LUN_PAT_NONE}, 681229997Sken 682229997Sken/* A1 BLANK */ 683229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 684229997Sken 685229997Sken/* A2 SEND EVENT */ 686229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 687229997Sken 688229997Sken/* A3 MAINTENANCE (IN) Service Action - (0A) REPORT TARGET PORT GROUP */ 689229997Sken{ctl_maintenance_in, CTL_SERIDX_MAIN_IN, CTL_CMD_FLAG_OK_ON_BOTH | 690229997Sken CTL_CMD_FLAG_OK_ON_STOPPED | 691229997Sken CTL_CMD_FLAG_OK_ON_INOPERABLE | 692229997Sken CTL_CMD_FLAG_OK_ON_SECONDARY | 693229997Sken CTL_FLAG_DATA_IN, 694229997Sken CTL_LUN_PAT_NONE}, 695229997Sken 696229997Sken/* A4 MAINTENANCE (OUT) */ 697229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 698229997Sken 699229997Sken/* A5 MOVE MEDIUM */ 700229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 701229997Sken 702229997Sken/* A6 EXCHANGE MEDIUM */ 703229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 704229997Sken 705229997Sken/* A7 MOVE MEDIUM ATTACHED */ 706229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 707229997Sken 708229997Sken/* A8 READ(12) */ 709229997Sken{ctl_read_write, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_SLUN | CTL_FLAG_DATA_IN | 710229997Sken CTL_CMD_FLAG_ALLOW_ON_PR_RESV, 711229997Sken CTL_LUN_PAT_READ | CTL_LUN_PAT_RANGE}, 712229997Sken 713229997Sken/* A9 PLAY TRACK RELATIVE(12) */ 714229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 715229997Sken 716229997Sken/* AA WRITE(12) */ 717229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 718229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 719229997Sken 720229997Sken/* AB SERVICE ACTION IN(12) */ 721229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 722229997Sken 723229997Sken/* AC ERASE(12) */ 724229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 725229997Sken 726229997Sken/* AD READ DVD STRUCTURE */ 727229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 728229997Sken 729229997Sken/* AE WRITE AND VERIFY(12) */ 730229997Sken{ctl_read_write, CTL_SERIDX_WRITE, CTL_CMD_FLAG_OK_ON_SLUN| CTL_FLAG_DATA_OUT, 731229997Sken CTL_LUN_PAT_WRITE | CTL_LUN_PAT_RANGE}, 732229997Sken 733229997Sken/* AF VERIFY(12) */ 734229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 735229997Sken 736229997Sken/* B0 SEARCH DATA HIGH(12) */ 737229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 738229997Sken 739229997Sken/* B1 SEARCH DATA EQUAL(12) */ 740229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 741229997Sken 742229997Sken/* B2 SEARCH DATA LOW(12) */ 743229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 744229997Sken 745229997Sken/* B3 SET LIMITS(12) */ 746229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 747229997Sken 748229997Sken/* B4 READ ELEMENT STATUS ATTACHED */ 749229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 750229997Sken 751229997Sken/* B5 REQUEST VOLUME ELEMENT ADDRESS */ 752229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 753229997Sken 754229997Sken/* B6 SEND VOLUME TAG */ 755229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 756229997Sken 757229997Sken/* B7 READ DEFECT DATA(12) */ 758229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 759229997Sken 760229997Sken/* B8 READ ELEMENT STATUS */ 761229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 762229997Sken 763229997Sken/* B9 READ CD MSF */ 764229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 765229997Sken 766229997Sken/* BA REDUNDANCY GROUP (IN) */ 767229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 768229997Sken 769229997Sken/* BB REDUNDANCY GROUP (OUT) */ 770229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 771229997Sken 772229997Sken/* BC SPARE (IN) */ 773229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 774229997Sken 775229997Sken/* BD SPARE (OUT) */ 776229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 777229997Sken 778229997Sken/* BE VOLUME SET (IN) */ 779229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 780229997Sken 781229997Sken/* BF VOLUME SET (OUT) */ 782229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 783229997Sken 784229997Sken/* C0 - ISC_SEND_MSG_SHORT */ 785229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 786229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_NONE, 787229997Sken CTL_LUN_PAT_NONE}, 788229997Sken 789229997Sken/* C1 - ISC_SEND_MSG */ 790229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 791229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT, 792229997Sken CTL_LUN_PAT_NONE}, 793229997Sken 794229997Sken/* C2 - ISC_WRITE */ 795229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 796229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_OUT, 797229997Sken CTL_LUN_PAT_NONE}, 798229997Sken 799229997Sken/* C3 - ISC_READ */ 800229997Sken//{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE}, 801229997Sken{ctl_isc, CTL_SERIDX_READ, CTL_CMD_FLAG_OK_ON_PROC | CTL_FLAG_DATA_IN, 802229997Sken CTL_LUN_PAT_NONE}, 803229997Sken 804229997Sken/* C4 */ 805229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 806229997Sken 807229997Sken/* C5 */ 808229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 809229997Sken 810229997Sken/* C6 */ 811229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 812229997Sken 813229997Sken/* C7 */ 814229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 815229997Sken 816229997Sken/* C8 */ 817229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 818229997Sken 819229997Sken/* C9 */ 820229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 821229997Sken 822229997Sken/* CA */ 823229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 824229997Sken 825229997Sken/* CB */ 826229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 827229997Sken 828229997Sken/* CC */ 829229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 830229997Sken 831229997Sken/* CD */ 832229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 833229997Sken 834229997Sken/* CE */ 835229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 836229997Sken 837229997Sken/* CF */ 838229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 839229997Sken 840229997Sken/* D0 */ 841229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 842229997Sken 843229997Sken/* D1 */ 844229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 845229997Sken 846229997Sken/* D2 */ 847229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 848229997Sken 849229997Sken/* D3 */ 850229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 851229997Sken 852229997Sken/* D4 */ 853229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 854229997Sken 855229997Sken/* D5 */ 856229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 857229997Sken 858229997Sken/* D6 */ 859229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 860229997Sken 861229997Sken/* D7 */ 862229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 863229997Sken 864229997Sken/* D8 */ 865229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 866229997Sken 867229997Sken/* D9 */ 868229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 869229997Sken 870229997Sken/* DA */ 871229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 872229997Sken 873229997Sken/* DB */ 874229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 875229997Sken 876229997Sken/* DC */ 877229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 878229997Sken 879229997Sken/* DD */ 880229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 881229997Sken 882229997Sken/* DE */ 883229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 884229997Sken 885229997Sken/* DF */ 886229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 887229997Sken 888229997Sken/* E0 */ 889229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 890229997Sken 891229997Sken/* E1 */ 892229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 893229997Sken 894229997Sken/* E2 */ 895229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 896229997Sken 897229997Sken/* E3 */ 898229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 899229997Sken 900229997Sken/* E4 */ 901229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 902229997Sken 903229997Sken/* E5 */ 904229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 905229997Sken 906229997Sken/* E6 */ 907229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 908229997Sken 909229997Sken/* E7 */ 910229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 911229997Sken 912229997Sken/* E8 */ 913229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 914229997Sken 915229997Sken/* E9 */ 916229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 917229997Sken 918229997Sken/* EA */ 919229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 920229997Sken 921229997Sken/* EB */ 922229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 923229997Sken 924229997Sken/* EC */ 925229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 926229997Sken 927229997Sken/* ED */ 928229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 929229997Sken 930229997Sken/* EE */ 931229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 932229997Sken 933229997Sken/* EF */ 934229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 935229997Sken 936229997Sken/* F0 */ 937229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 938229997Sken 939229997Sken/* F1 */ 940229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 941229997Sken 942229997Sken/* F2 */ 943229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 944229997Sken 945229997Sken/* F3 */ 946229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 947229997Sken 948229997Sken/* F4 */ 949229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 950229997Sken 951229997Sken/* F5 */ 952229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 953229997Sken 954229997Sken/* F6 */ 955229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 956229997Sken 957229997Sken/* F7 */ 958229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 959229997Sken 960229997Sken/* F8 */ 961229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 962229997Sken 963229997Sken/* F9 */ 964229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 965229997Sken 966229997Sken/* FA */ 967229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 968229997Sken 969229997Sken/* FB */ 970229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 971229997Sken 972229997Sken/* FC */ 973229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 974229997Sken 975229997Sken/* FD */ 976229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 977229997Sken 978229997Sken/* FE */ 979229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE}, 980229997Sken 981229997Sken/* FF */ 982229997Sken{NULL, CTL_SERIDX_INVLD, CTL_CMD_FLAG_NONE, CTL_LUN_PAT_NONE} 983229997Sken 984229997Sken}; 985229997Sken