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