/* machine generated. Once. TODO: write the vendor support to bring this in as we should. * But the errors almost never change, so there's no hurry. */ #include #include typedef struct Err Err; struct Err { int n; char *s; }; static Err scsierrs[] = { {0x0000, "no additional sense information"}, {0x0001, "filemark detected"}, {0x0002, "end-of-partition/medium detected"}, {0x0003, "setmark detected"}, {0x0004, "beginning-of-partition/medium detected"}, {0x0005, "end-of-data detected"}, {0x0006, "i/o process terminated"}, {0x0007, "programmable early warning detected"}, {0x0011, "audio play operation in progress"}, {0x0012, "audio play operation paused"}, {0x0013, "audio play operation successfully completed"}, {0x0014, "audio play operation stopped due to error"}, {0x0015, "no current audio status to return"}, {0x0016, "operation in progress"}, {0x0017, "cleaning requested"}, {0x0018, "erase operation in progress"}, {0x0019, "locate operation in progress"}, {0x001a, "rewind operation in progress"}, {0x001b, "set capacity operation in progress"}, {0x001c, "verify operation in progress"}, {0x0100, "no index/sector signal"}, {0x0200, "no seek complete"}, {0x0300, "peripheral device write fault"}, {0x0301, "no write current"}, {0x0302, "excessive write errors"}, {0x0400, "logical unit not ready, cause not reportable"}, {0x0401, "logical unit is in process of becoming ready"}, {0x0402, "logical unit not ready, initializing command required"}, {0x0403, "logical unit not ready, manual intervention required"}, {0x0404, "logical unit not ready, format in progress"}, {0x0405, "logical unit not ready, rebuild in progress"}, {0x0406, "logical unit not ready, recalculation in progress"}, {0x0407, "logical unit not ready, operation in progress"}, {0x0408, "logical unit not ready, long write in progress"}, {0x0409, "logical unit not ready, self-test in progress"}, {0x040a, "logical unit not accessible, asymmetric access state transition"}, {0x040b, "logical unit not accessible, target port in standby state"}, {0x040c, "logical unit not accessible, target port in unavailable state"}, {0x0410, "logical unit not ready, auxiliary memory not accessible"}, {0x0411, "logical unit not ready, notify (enable spinup) required"}, {0x0412, "logical unit not ready, offline"}, {0x0413, "logical unit not ready, sa creation in progress"}, {0x0414, "logical unit not ready, space allocation in progress"}, {0x0415, "logical unit not ready, robotics disabled"}, {0x0416, "logical unit not ready, configuration required"}, {0x0417, "logical unit not ready, calibration required"}, {0x0418, "logical unit not ready, a door is open"}, {0x0419, "logical unit not ready, operating in sequential mode"}, {0x0500, "logical unit does not respond to selection"}, {0x0600, "no reference position found"}, {0x0700, "multiple peripheral devices selected"}, {0x0800, "logical unit communication failure"}, {0x0801, "logical unit communication time-out"}, {0x0802, "logical unit communication parity error"}, {0x0803, "logical unit communication crc error (ultra-dma/32)"}, {0x0804, "unreachable copy target"}, {0x0900, "track following error"}, {0x0901, "tracking servo failure"}, {0x0902, "focus servo failure"}, {0x0903, "spindle servo failure"}, {0x0904, "head select fault"}, {0x0a00, "error log overflow"}, {0x0b00, "warning"}, {0x0b01, "warning - specified temperature exceeded"}, {0x0b02, "warning - enclosure degraded"}, {0x0b03, "warning - background self-test failed"}, {0x0b04, "warning - background pre-scan detected medium error"}, {0x0b05, "warning - background medium scan detected medium error"}, {0x0b06, "warning - non-volatile cache now volatile"}, {0x0b07, "warning - degraded power to non-volatile cache"}, {0x0b08, "warning - power loss expected"}, {0x0c00, "write error"}, {0x0c01, "write error - recovered with auto reallocation"}, {0x0c02, "write error - auto reallocation failed"}, {0x0c03, "write error - recommend reassignment"}, {0x0c04, "compression check miscompare error"}, {0x0c05, "data expansion occurred during compression"}, {0x0c06, "block not compressible"}, {0x0c07, "write error - recovery needed"}, {0x0c08, "write error - recovery failed"}, {0x0c09, "write error - loss of streaming"}, {0x0c0a, "write error - padding blocks added"}, {0x0c0b, "auxiliary memory write error"}, {0x0c0c, "write error - unexpected unsolicited data"}, {0x1000, "id crc or ecc error"}, {0x1001, "logical block guard check failed"}, {0x1002, "logical block application tag check failed"}, {0x1003, "logical block reference tag check failed"}, {0x1100, "unrecovered read error"}, {0x1101, "read retries exhausted"}, {0x1102, "error too long to correct"}, {0x1103, "multiple read errors"}, {0x1104, "unrecovered read error - auto reallocate failed"}, {0x1105, "l-ec uncorrectable error"}, {0x1106, "circ unrecovered error"}, {0x1107, "data re-synchronization error"}, {0x1108, "incomplete block read"}, {0x1109, "no gap found"}, {0x110a, "miscorrected error"}, {0x110b, "unrecovered read error - recommend reassignment"}, {0x110c, "unrecovered read error - recommend rewrite the data"}, {0x1110, "error reading isrc number"}, {0x1111, "read error - loss of streaming"}, {0x1112, "auxiliary memory read error"}, {0x1113, "read error - failed retransmission request"}, {0x1114, "read error - lba marked bad by application client"}, {0x1200, "address mark not found for id field"}, {0x1300, "address mark not found for data field"}, {0x1400, "recorded entity not found"}, {0x1401, "record not found"}, {0x1402, "filemark or setmark not found"}, {0x1403, "end-of-data not found"}, {0x1404, "block sequence error"}, {0x1405, "record not found - recommend reassignment"}, {0x1406, "record not found - data auto-reallocated"}, {0x1407, "locate operation failure"}, {0x1500, "random positioning error"}, {0x1501, "mechanical positioning error"}, {0x1502, "positioning error detected by read of medium"}, {0x1600, "data synchronization mark error"}, {0x1601, "data sync error - data rewritten"}, {0x1602, "data sync error - recommend rewrite"}, {0x1603, "data sync error - data auto-reallocated"}, {0x1604, "data sync error - recommend reassignment"}, {0x1700, "recovered data with no error correction applied"}, {0x1701, "recovered data with retries"}, {0x1702, "recovered data with positive head offset"}, {0x1703, "recovered data with negative head offset"}, {0x1704, "recovered data with retries and/or circ applied"}, {0x1705, "recovered data using previous sector id"}, {0x1706, "recovered data without ecc - data auto-reallocated"}, {0x1707, "recovered data without ecc - recommend reassignment"}, {0x1708, "recovered data without ecc - recommend rewrite"}, {0x1709, "recovered data without ecc - data rewritten"}, {0x1800, "recovered data with error correction applied"}, {0x1801, "recovered data with error corr. & retries applied"}, {0x1802, "recovered data - data auto-reallocated"}, {0x1803, "recovered data with circ"}, {0x1804, "recovered data with l-ec"}, {0x1805, "recovered data - recommend reassignment"}, {0x1806, "recovered data - recommend rewrite"}, {0x1807, "recovered data with ecc - data rewritten"}, {0x1808, "recovered data with linking"}, {0x1900, "defect list error"}, {0x1901, "defect list not available"}, {0x1902, "defect list error in primary list"}, {0x1903, "defect list error in grown list"}, {0x1a00, "parameter list length error"}, {0x1b00, "synchronous data transfer error"}, {0x1c00, "defect list not found"}, {0x1c01, "primary defect list not found"}, {0x1c02, "grown defect list not found"}, {0x2000, "invalid command operation code"}, {0x2001, "access denied - initiator pending-enrolled"}, {0x2002, "access denied - no access rights"}, {0x2003, "access denied - invalid mgmt id key"}, {0x2004, "illegal command while in write capable state"}, {0x2005, "obsolete"}, {0x2006, "illegal command while in explicit address mode"}, {0x2007, "illegal command while in implicit address mode"}, {0x2008, "access denied - enrollment conflict"}, {0x2009, "access denied - invalid lu identifier"}, {0x200a, "access denied - invalid proxy token"}, {0x200b, "access denied - acl lun conflict"}, {0x2100, "logical block address out of range"}, {0x2101, "invalid element address"}, {0x2102, "invalid address for write"}, {0x2103, "invalid write crossing layer jump"}, {0x2200, "illegal function (use 20 00, 24 00, or 26 00)"}, {0x2400, "invalid field in cdb"}, {0x2401, "cdb decryption error"}, {0x2402, "obsolete"}, {0x2403, "obsolete"}, {0x2404, "security audit value frozen"}, {0x2405, "security working key frozen"}, {0x2406, "nonce not unique"}, {0x2407, "nonce timestamp out of range"}, {0x2408, "invalid xcdb"}, {0x2500, "logical unit not supported"}, {0x2600, "invalid field in parameter list"}, {0x2601, "parameter not supported"}, {0x2602, "parameter value invalid"}, {0x2603, "threshold parameters not supported"}, {0x2604, "invalid release of persistent reservation"}, {0x2605, "data decryption error"}, {0x2606, "too many target descriptors"}, {0x2607, "unsupported target descriptor type code"}, {0x2608, "too many segment descriptors"}, {0x2609, "unsupported segment descriptor type code"}, {0x260a, "unexpected inexact segment"}, {0x260b, "inline data length exceeded"}, {0x260c, "invalid operation for copy source or destination"}, {0x2610, "data decryption key fail limit reached"}, {0x2611, "incomplete key-associated data set"}, {0x2612, "vendor specific key reference not found"}, {0x2700, "write protected"}, {0x2701, "hardware write protected"}, {0x2702, "logical unit software write protected"}, {0x2703, "associated write protect"}, {0x2704, "persistent write protect"}, {0x2705, "permanent write protect"}, {0x2706, "conditional write protect"}, {0x2707, "space allocation failed write protect"}, {0x2800, "not ready to ready change, medium may have changed"}, {0x2801, "import or export element accessed"}, {0x2802, "format-layer may have changed"}, {0x2803, "import/export element accessed, medium changed"}, {0x2900, "power on, reset, or bus device reset occurred"}, {0x2901, "power on occurred"}, {0x2902, "scsi bus reset occurred"}, {0x2903, "bus device reset function occurred"}, {0x2904, "device internal reset"}, {0x2905, "transceiver mode changed to single-ended"}, {0x2906, "transceiver mode changed to lvd"}, {0x2907, "i_t nexus loss occurred"}, {0x2a00, "parameters changed"}, {0x2a01, "mode parameters changed"}, {0x2a02, "log parameters changed"}, {0x2a03, "reservations preempted"}, {0x2a04, "reservations released"}, {0x2a05, "registrations preempted"}, {0x2a06, "asymmetric access state changed"}, {0x2a07, "implicit asymmetric access state transition failed"}, {0x2a08, "priority changed"}, {0x2a09, "capacity data has changed"}, {0x2a0a, "error history i_t nexus cleared"}, {0x2a0b, "error history snapshot released"}, {0x2a0c, "error recovery attributes have changed"}, {0x2a10, "timestamp changed"}, {0x2a11, "data encryption parameters changed by another i_t nexus"}, {0x2a12, "data encryption parameters changed by vendor specific event"}, {0x2a13, "data encryption key instance counter has changed"}, {0x2a14, "sa creation capabilities data has changed"}, {0x2b00, "copy cannot execute since host cannot disconnect"}, {0x2c00, "command sequence error"}, {0x2c01, "too many windows specified"}, {0x2c02, "invalid combination of windows specified"}, {0x2c03, "current program area is not empty"}, {0x2c04, "current program area is empty"}, {0x2c05, "illegal power condition request"}, {0x2c06, "persistent prevent conflict"}, {0x2c07, "previous busy status"}, {0x2c08, "previous task set full status"}, {0x2c09, "previous reservation conflict status"}, {0x2c0a, "partition or collection contains user objects"}, {0x2c0b, "not reserved"}, {0x3000, "incompatible medium installed"}, {0x3001, "cannot read medium - unknown format"}, {0x3002, "cannot read medium - incompatible format"}, {0x3003, "cleaning cartridge installed"}, {0x3004, "cannot write medium - unknown format"}, {0x3005, "cannot write medium - incompatible format"}, {0x3006, "cannot format medium - incompatible medium"}, {0x3007, "cleaning failure"}, {0x3008, "cannot write - application code mismatch"}, {0x3009, "current session not fixated for append"}, {0x300a, "cleaning request rejected"}, {0x300c, "worm medium - overwrite attempted"}, {0x3010, "medium not formatted"}, {0x3011, "incompatible volume type"}, {0x3012, "incompatible volume qualifier"}, {0x3013, "cleaning volume expired"}, {0x3100, "medium format corrupted"}, {0x3101, "format command failed"}, {0x3102, "zoned formatting failed due to spare linking"}, {0x3200, "no defect spare location available"}, {0x3201, "defect list update failure"}, {0x3300, "tape length error"}, {0x3400, "enclosure failure"}, {0x3500, "enclosure services failure"}, {0x3501, "unsupported enclosure function"}, {0x3502, "enclosure services unavailable"}, {0x3503, "enclosure services transfer failure"}, {0x3504, "enclosure services transfer refused"}, {0x3505, "enclosure services checksum error"}, {0x3600, "ribbon, ink, or toner failure"}, {0x3700, "rounded parameter"}, {0x3800, "event status notification"}, {0x3802, "esn - power management class event"}, {0x3804, "esn - media class event"}, {0x3806, "esn - device busy class event"}, {0x3807, "thin provisioning soft threshold reached"}, {0x3900, "saving parameters not supported"}, {0x3a00, "medium not present"}, {0x3a01, "medium not present - tray closed"}, {0x3a02, "medium not present - tray open"}, {0x3a03, "medium not present - loadable"}, {0x3a04, "medium not present - medium auxiliary memory accessible"}, {0x3b00, "sequential positioning error"}, {0x3b01, "tape position error at beginning-of-medium"}, {0x3b02, "tape position error at end-of-medium"}, {0x3b03, "tape or electronic vertical forms unit not ready"}, {0x3b04, "slew failure"}, {0x3b05, "paper jam"}, {0x3b06, "failed to sense top-of-form"}, {0x3b07, "failed to sense bottom-of-form"}, {0x3b08, "reposition error"}, {0x3b09, "read past end of medium"}, {0x3b0a, "read past beginning of medium"}, {0x3b0b, "position past end of medium"}, {0x3b0c, "position past beginning of medium"}, {0x3b11, "medium magazine not accessible"}, {0x3b12, "medium magazine removed"}, {0x3b13, "medium magazine inserted"}, {0x3b14, "medium magazine locked"}, {0x3b15, "medium magazine unlocked"}, {0x3b16, "mechanical positioning or changer error"}, {0x3b17, "read past end of user object"}, {0x3b18, "element disabled"}, {0x3b19, "element enabled"}, {0x3b1a, "data transfer device removed"}, {0x3b1b, "data transfer device inserted"}, {0x4000, "ram failure (should use 40 nn)"}, {0x4100, "data path failure (should use 40 nn)"}, {0x4200, "power-on or self-test failure (should use 40 nn)"}, {0x4300, "message error"}, {0x4400, "internal target failure"}, {0x4471, "ata device failed set features"}, {0x4500, "select or reselect failure"}, {0x4600, "unsuccessful soft reset"}, {0x4700, "scsi parity error"}, {0x4701, "data phase crc error detected"}, {0x4702, "scsi parity error detected during st data phase"}, {0x4703, "information unit iucrc error detected"}, {0x4704, "asynchronous information protection error detected"}, {0x4705, "protocol service crc error"}, {0x4706, "phy test function in progress"}, {0x4800, "initiator detected error message received"}, {0x4900, "invalid message error"}, {0x4a00, "command phase error"}, {0x4b00, "data phase error"}, {0x4b01, "invalid target port transfer tag received"}, {0x4b02, "too much write data"}, {0x4b03, "ack/nak timeout"}, {0x4b04, "nak received"}, {0x4b05, "data offset error"}, {0x4b06, "initiator response timeout"}, {0x4b07, "connection lost"}, {0x4c00, "logical unit failed self-configuration"}, {0x5000, "write append error"}, {0x5001, "write append position error"}, {0x5002, "position error related to timing"}, {0x5100, "erase failure"}, {0x5101, "erase failure - incomplete erase operation detected"}, {0x5200, "cartridge fault"}, {0x5300, "media load or eject failed"}, {0x5301, "unload tape failure"}, {0x5302, "medium removal prevented"}, {0x5303, "medium removal prevented by data transfer element"}, {0x5304, "medium thread or unthread failure"}, {0x5400, "scsi to host system interface failure"}, {0x5500, "system resource failure"}, {0x5501, "system buffer full"}, {0x5502, "insufficient reservation resources"}, {0x5503, "insufficient resources"}, {0x5504, "insufficient registration resources"}, {0x5505, "insufficient access control resources"}, {0x5506, "auxiliary memory out of space"}, {0x5507, "quota error"}, {0x5508, "maximum number of supplemental decryption keys exceeded"}, {0x5509, "medium auxiliary memory not accessible"}, {0x550a, "data currently unavailable"}, {0x550b, "insufficient power for operation"}, {0x5700, "unable to recover table-of-contents"}, {0x5800, "generation does not exist"}, {0x5900, "updated block read"}, {0x5a00, "operator request or state change input"}, {0x5a01, "operator medium removal request"}, {0x5a02, "operator selected write protect"}, {0x5a03, "operator selected write permit"}, {0x5b00, "log exception"}, {0x5b01, "threshold condition met"}, {0x5b02, "log counter at maximum"}, {0x5b03, "log list codes exhausted"}, {0x5c00, "rpl status change"}, {0x5c01, "spindles synchronized"}, {0x5c02, "spindles not synchronized"}, {0x6000, "lamp failure"}, {0x6100, "video acquisition error"}, {0x6101, "unable to acquire video"}, {0x6102, "out of focus"}, {0x6200, "scan head positioning error"}, {0x6300, "end of user area encountered on this track"}, {0x6301, "packet does not fit in available space"}, {0x6400, "illegal mode for this track"}, {0x6401, "invalid packet size"}, {0x6500, "voltage fault"}, {0x6600, "automatic document feeder cover up"}, {0x6601, "automatic document feeder lift up"}, {0x6602, "document jam in automatic document feeder"}, {0x6603, "document miss feed automatic in document feeder"}, {0x6700, "configuration failure"}, {0x6701, "configuration of incapable logical units failed"}, {0x6702, "add logical unit failed"}, {0x6703, "modification of logical unit failed"}, {0x6704, "exchange of logical unit failed"}, {0x6705, "remove of logical unit failed"}, {0x6706, "attachment of logical unit failed"}, {0x6707, "creation of logical unit failed"}, {0x6708, "assign failure occurred"}, {0x6709, "multiply assigned logical unit"}, {0x670a, "set target port groups command failed"}, {0x670b, "ata device feature not enabled"}, {0x6800, "logical unit not configured"}, {0x6900, "data loss on logical unit"}, {0x6901, "multiple logical unit failures"}, {0x6902, "parity/data mismatch"}, {0x6a00, "informational, refer to log"}, {0x6b00, "state change has occurred"}, {0x6b01, "redundancy level got better"}, {0x6b02, "redundancy level got worse"}, {0x6c00, "rebuild failure occurred"}, {0x7100, "decompression exception long algorithm id"}, {0x7200, "session fixation error"}, {0x7201, "session fixation error writing lead-in"}, {0x7202, "session fixation error writing lead-out"}, {0x7203, "session fixation error - incomplete track in session"}, {0x7204, "empty or partially written reserved track"}, {0x7205, "no more track reservations allowed"}, {0x7206, "rmz extension is not allowed"}, {0x7207, "no more test zone extensions are allowed"}, {0x7300, "cd control error"}, {0x7301, "power calibration area almost full"}, {0x7302, "power calibration area is full"}, {0x7303, "power calibration area error"}, {0x7304, "program memory area update failure"}, {0x7305, "program memory area is full"}, {0x7306, "rma/pma is almost full"}, {0x7310, "current power calibration area almost full"}, {0x7311, "current power calibration area is full"}, {0x7317, "rdz is full"}, {0x7400, "security error"}, {0x7401, "unable to decrypt data"}, {0x7402, "unencrypted data encountered while decrypting"}, {0x7403, "incorrect data encryption key"}, {0x7404, "cryptographic integrity validation failed"}, {0x7405, "error decrypting data"}, {0x7406, "unknown signature verification key"}, {0x7407, "encryption parameters not useable"}, {0x7408, "digital signature validation failure"}, {0x7409, "encryption mode mismatch on read"}, {0x740a, "encrypted block not raw read enabled"}, {0x740b, "incorrect encryption parameters"}, {0x740c, "unable to decrypt parameter list"}, {0x7410, "sa creation parameter value invalid"}, {0x7411, "sa creation parameter value rejected"}, {0x7412, "invalid sa usage"}, {0x7421, "data encryption configuration prevented"}, {0x7430, "sa creation parameter not supported"}, {0x7440, "authentication failed"}, {0x7461, "external data encryption key manager access error"}, {0x7462, "external data encryption key manager error"}, {0x7463, "external data encryption key not found"}, {0x7464, "external data encryption request not authorized"}, {0x7471, "logical unit access not authorized"}, {0x7479, "security conflict in translated device"}, }; char* scsierrmsg(int n) { int i; for(i = 0; i < nelem(scsierrs); i++) if(scsierrs[i].n == n) return scsierrs[i].s; return "scsi error"; }