275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * CDDL HEADER START
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * The contents of this file are subject to the terms of the
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Common Development and Distribution License (the "License").
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * You may not use this file except in compliance with the License.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * See the License for the specific language governing permissions
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * and limitations under the License.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * When distributing Covered Code, include this CDDL HEADER in each
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * If applicable, add the following below this CDDL HEADER, with the
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * fields enclosed by brackets "[]" replaced with your own identifying
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * information: Portions Copyright [yyyy] [name of copyright owner]
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * CDDL HEADER END
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Use is subject to license terms.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock#pragma ident "%Z%%M% %I% %E% SMI"
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x00, 0x02, "end of partition/medium detected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x00, 0x04, "begining of partition/medium detected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x00, 0x11, "audio play operation in progress" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x00, 0x13, "audio play operation successfully completed" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x00, 0x14, "audio play operation stopped due to error" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x00, 0x15, "no current audio status to return" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x00, 0x1B, "set capacity operation in progress" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x02, "LUN initializing command required" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x03, "LUN not ready intervention required" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x04, "LUN not ready format in progress" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x05, "LUN not ready, rebuild in progress" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x06, "LUN not ready, recalculation in progress" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x07, "LUN not ready, operation in progress" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x08, "LUN not ready, long write in progress" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x09, "LUN not ready, self-test in progress" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x0A, "LUN not accessible, asymmetric access state "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock "transition" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x0B, "LUN not accessible, target port in standby state" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x0C, "LUN not accessible, target port in unavailable state" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x04, 0x10, "LUN not ready, auxiliary memory not accessible" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x05, 0x00, "LUN does not respond to selection" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x07, 0x00, "multiple peripheral devices selected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x08, 0x03, "LUN communication crc error (ultra-DMA/32)" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0b, 0x01, "warning - specified temperature exceeded" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0c, 0x01, "write error - recovered with auto reallocation" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0c, 0x02, "write error - auto reallocation failed" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0c, 0x03, "write error - recommend reassignment" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0c, 0x04, "compression check miscompare error" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0c, 0x05, "data expansion occurred during compression" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0c, 0x0a, "write error - padding blocks added" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0c, 0x0c, "write error - unexpected unsolicited data" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0c, 0x0d, "write error - not enough unsolicited data" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0d, 0x00, "error detected by third party temporary initiator" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0d, 0x02, "copy target device not reachable" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0d, 0x03, "incorrect copy target device type" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x0d, 0x04, "copy target device data underrun" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x11, 0x04, "unrecovered read error - auto reallocate failed" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x11, 0x0b, "unrecovered read error - recommend reassignment" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x11, 0x0c, "unrecovered read error - recommend rewrite the data" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x11, 0x0e, "cannot decompress using declared algorithm" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x11, 0x13, "read error - failed retransmission request" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x12, 0x00, "address mark not found for ID field" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x13, 0x00, "address mark not found for data field" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x14, 0x05, "record not found - recommend reassignment" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x14, 0x06, "record not found - data auto-reallocated" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x15, 0x02, "positioning error detected by read of medium" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x16, 0x01, "data sync error - data rewritten" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x16, 0x02, "data sync error - recommend rewrite" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x16, 0x03, "data sync error - data auto-reallocated" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x16, 0x04, "data sync error - recommend reassignment" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x17, 0x00, "recovered data with no error correction" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x17, 0x02, "recovered data with positive head offset" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x17, 0x03, "recovered data with negative head offset" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x17, 0x04, "recovered data with retries and/or CIRC applied" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x17, 0x05, "recovered data using previous sector id" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x17, 0x06, "recovered data without ECC - data auto-reallocated" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x17, 0x07, "recovered data without ECC - recommend reassignment" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x17, 0x08, "recovered data without ECC - recommend rewrite" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x17, 0x09, "recovered data without ECC - data rewritten" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x18, 0x00, "recovered data with error correction" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x18, 0x01, "recovered data with error corr. & retries applied" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x18, 0x02, "recovered data - data auto-reallocated" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x18, 0x05, "recovered data - recommend reassignment" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x18, 0x06, "recovered data - recommend rewrite" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x18, 0x07, "recovered data with ECC - data rewritten" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x20, 0x01, "access denied - initiator pending-enrolled" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x20, 0x02, "access denied - no access rights" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x20, 0x03, "access denied - invalid mgmt id key" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x20, 0x04, "illegal command while in write capable state" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x20, 0x06, "illegal command while in explicit address mode" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x20, 0x07, "illegal command while in implicit address mode" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x20, 0x08, "access denied - enrollment conflict" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x20, 0x09, "access denied - invalid lu identifier" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x20, 0x0a, "access denied - invalid proxy token" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x20, 0x0b, "access denied - ACL LUN conflict" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x21, 0x00, "logical block address out of range" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x26, 0x03, "threshold parameters not supported" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x26, 0x04, "invalid release of persistent reservation" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x26, 0x07, "unsupported target descriptor type code" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x26, 0x09, "unsupported segment descriptor type code" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x26, 0x0c, "invalid operation for copy source or destination" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x26, 0x0d, "copy segment granularity violation" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x28, 0x01, "import or export element accessed" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x29, 0x00, "power on, reset, or bus reset occurred" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x29, 0x03, "bus device reset message occurred" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x29, 0x05, "transceiver mode changed to single-ended" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x2a, 0x07, "implicit asymmetric access state transition failed" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x2b, 0x00, "copy cannot execute since host cannot disconnect" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x2c, 0x03, "current program area is not empty" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x2c, 0x09, "previous reservation conflict status" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x2d, 0x00, "overwrite error on update in place" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x2f, 0x00, "commands cleared by another initiator" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x30, 0x01, "cannot read medium - unknown format" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x30, 0x02, "cannot read medium - incompatible format" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x30, 0x04, "cannot write medium - unknown format" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x30, 0x05, "cannot write medium - incompatible format" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x30, 0x06, "cannot format medium - incompatible medium" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x30, 0x08, "cannot write - application code mismatch" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x30, 0x09, "current session not fixated for append" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x31, 0x02, "zoned formatting failed due to spare linking" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x32, 0x00, "no defect spare location available" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x35, 0x03, "enclosure services transfer failure" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x35, 0x04, "enclosure services transfer refused" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3a, 0x01, "medium not present - tray closed" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3a, 0x04, "medium not present - medium auxiliary memory "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock "accessible" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3b, 0x01, "tape position error at beginning-of-medium" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3b, 0x02, "tape position error at end-of-medium" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3b, 0x0c, "position past beginning of medium" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3b, 0x16, "mechanical positioning or changer error" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3d, 0x00, "invalid bits in indentify message" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3e, 0x04, "LUN unable to update self-test log" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3f, 0x00, "target operating conditions have changed" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3f, 0x06, "redundancy group created or modified" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x3f, 0x11, "medium auxiliary memory accessible" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x47, 0x02, "scsi parity error detected during st data phase" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x47, 0x03, "information unit iucrc error detected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x47, 0x04, "asynchronous information protection error detected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x47, 0x7f, "some commands cleared by iscsi protocol event" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x48, 0x00, "initiator detected error message received" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x4b, 0x01, "invalid target port transfer tag received" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x4c, 0x00, "logical unit failed self-configuration" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x4d, 0x00, "tagged overlapped commands (ASCQ = queue tag)" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x54, 0x00, "scsi to host system interface failure" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x55, 0x02, "insufficient reservation resources" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x55, 0x04, "insufficient registration resources" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x55, 0x05, "insufficient access control resources" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5a, 0x00, "operator request or state change input" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x00, "drive operation marginal, service immediately"
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock " (failure prediction threshold exceeded)" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x01, "media failure prediction threshold exceeded" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x02, "LUN failure prediction threshold exceeded" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x03, "spare area exhaustion prediction threshold exceeded" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x10, "hardware impending failure general hard drive failure" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x11, "hardware impending failure drive error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x12, "hardware impending failure data error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x13, "hardware impending failure seek error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x14, "hardware impending failure too many block reassigns" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x15, "hardware impending failure access times too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x16, "hardware impending failure start unit times too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x17, "hardware impending failure channel parametrics" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x18, "hardware impending failure controller detected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x19, "hardware impending failure throughput performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x1a, "hardware impending failure seek time performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x1b, "hardware impending failure spin-up retry count" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x1c, "hardware impending failure drive calibration retry "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x20, "controller impending failure general hard drive "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock "failure" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x21, "controller impending failure drive error rate too "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x22, "controller impending failure data error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x23, "controller impending failure seek error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x24, "controller impending failure too many block reassigns" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x25, "controller impending failure access times too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x26, "controller impending failure start unit times too "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x27, "controller impending failure channel parametrics" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x28, "controller impending failure controller detected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x29, "controller impending failure throughput performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x2a, "controller impending failure seek time performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x2b, "controller impending failure spin-up retry count" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x2c, "controller impending failure drive calibration retry "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x30, "data channel impending failure general hard drive "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock "failure" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x31, "data channel impending failure drive error rate too "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x32, "data channel impending failure data error rate too "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x33, "data channel impending failure seek error rate too "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x34, "data channel impending failure too many block "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock "reassigns" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x35, "data channel impending failure access times too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x36, "data channel impending failure start unit times too "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x37, "data channel impending failure channel parametrics" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x38, "data channel impending failure controller detected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x39, "data channel impending failure throughput performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x3a, "data channel impending failure seek time performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x3b, "data channel impending failure spin-up retry count" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x3c, "data channel impending failure drive calibrate retry "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x40, "servo impending failure general hard drive failure" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x41, "servo impending failure drive error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x42, "servo impending failure data error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x43, "servo impending failure seek error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x44, "servo impending failure too many block reassigns" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x45, "servo impending failure access times too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x46, "servo impending failure start unit times too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x47, "servo impending failure channel parametrics" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x48, "servo impending failure controller detected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x49, "servo impending failure throughput performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x4a, "servo impending failure seek time performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x4b, "servo impending failure spin-up retry count" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x4c, "servo impending failure drive calibration retry count" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x50, "spindle impending failure general hard drive failure" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x51, "spindle impending failure drive error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x52, "spindle impending failure data error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x53, "spindle impending failure seek error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x54, "spindle impending failure too many block reassigns" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x55, "spindle impending failure access times too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x56, "spindle impending failure start unit times too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x57, "spindle impending failure channel parametrics" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x58, "spindle impending failure controller detected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x59, "spindle impending failure throughput performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x5a, "spindle impending failure seek time performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x5b, "spindle impending failure spin-up retry count" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x5c, "spindle impending failure drive calibration retry "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x60, "firmware impending failure general hard drive failure" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x61, "firmware impending failure drive error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x62, "firmware impending failure data error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x63, "firmware impending failure seek error rate too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x64, "firmware impending failure too many block reassigns" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x65, "firmware impending failure access times too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x66, "firmware impending failure start unit times too high" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x67, "firmware impending failure channel parametrics" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x68, "firmware impending failure controller detected" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x69, "firmware impending failure throughput performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x6a, "firmware impending failure seek time performance" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x6b, "firmware impending failure spin-up retry count" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0x6c, "firmware impending failure drive calibration retry "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5d, 0xff, "failure prediction threshold exceeded (false)" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5e, 0x01, "idle condition activated by timer" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5e, 0x02, "standby condition activated by timer" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5e, 0x03, "idle condition activated by command" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x5e, 0x04, "standby condition activated by command" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x63, 0x00, "end of user area encountered on this track" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x63, 0x01, "packet does not fit in available space" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x66, 0x00, "automatic document feeder cover up" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x67, 0x01, "configuration of incapable LUNs failed" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x67, 0x0a, "set target port groups command failed" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x6f, 0x00, "copy protect key exchange failure authentication "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock "failure" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x6f, 0x01, "copy protect key exchange failure key not present" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x6f, 0x02, "copy protect key exchange failure key not established" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x6f, 0x03, "read of scrambled sector without authentication" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x6f, 0x04, "media region code is mismatched to LUN region" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x6f, 0x05, "drive region must be permanent/region reset count "
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x70, 0xffff, "decompression exception short algorithm id of ASCQ" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x71, 0x00, "decompression exception long algorithm id" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x72, 0x01, "session fixation error writing lead-in" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x72, 0x02, "session fixation error writing lead-out" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x72, 0x03, "session fixation error - incomplete track in session" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x72, 0x04, "empty or partially written reserved track" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x72, 0x05, "no more track reservations allowed" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x73, 0x01, "power calibration area almost full" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock { 0x73, 0x04, "program memory area update failure" },
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrockstatic const char *
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrockconst char *
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Given an asc (Additional Sense Code) and ascq (Additional Sense Code
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Qualifier), return a string describing the error information.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrockconst char *
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrocklibscsi_sense_code_name(uint64_t asc, uint64_t ascq)
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Retrieve "information" field from descriptor format sense data. Iterates
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * through each sense descriptor looking for the information descriptor and
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * returns the information field from that descriptor.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrockscsi_extract_sense_info_descr(struct scsi_descr_sense_hdr *sdsp, size_t len)
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Initialize result to -1 indicating there is no information
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * descriptor
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * The first descriptor will immediately follow the header
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Calculate the amount of valid sense data
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Iterate through the list of descriptors, stopping when we run out of
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * sense data
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock while ((descr_offset + sizeof (struct scsi_information_sense_descr)) <=
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Check if this is an information descriptor. We can use the
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * scsi_information_sense_descr structure as a template since
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * the first two fields are always the same
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock isd = (struct scsi_information_sense_descr *)descr_offset;
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Found an information descriptor. Copy the
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * information field. There will only be one
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * information descriptor so we can stop looking.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * Get pointer to the next descriptor. The "additional length"
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * field holds the length of the descriptor except for the
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * "type" and "additional length" fields, so we need to add 2 to
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock * get the total length.
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrocklibscsi_action_parse_sense(const libscsi_action_t *ap, uint64_t *keyp,
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock if (libscsi_action_get_sense(ap, (uint8_t **)&xsp, NULL, &len) != 0)
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (-1);
275c9da86e89f8abf71135cf63d9fc23671b2e60eschrock return (0);