hrev46099 adds 1 changeset to branch 'master' old head: 8304a88369112130df483f4752bb9e82985f8b74 new head: 3ffd22ce6d0671c4d51507f8b57a78143d9b2ab0 overview: http://cgit.haiku-os.org/haiku/log/?qt=range&q=3ffd22c+%5E8304a88 ---------------------------------------------------------------------------- 3ffd22c: usb_disk: base the error sense handling on a reference table. * imported asc-num.txt as a reference, was used to generate the asc sense table. * use the sense asc and key tables to know which action and status codes are to be applied. * tested with an hard disk and a dvd reader. * these tables could be reused by the scsi_periph module. [ Jerome Duval <jerome.duval@xxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev46099 Commit: 3ffd22ce6d0671c4d51507f8b57a78143d9b2ab0 URL: http://cgit.haiku-os.org/haiku/commit/?id=3ffd22c Author: Jerome Duval <jerome.duval@xxxxxxxxx> Date: Fri Sep 20 21:48:23 2013 UTC ---------------------------------------------------------------------------- 4 files changed, 1592 insertions(+), 59 deletions(-) docs/develop/kernel/scsi_asc-num-20130919.txt | 728 +++++++++++++++++ headers/private/drivers/scsi_sense.h | 800 +++++++++++++++++++ .../kernel/drivers/disk/usb/usb_disk/Jamfile | 2 +- .../drivers/disk/usb/usb_disk/usb_disk.cpp | 121 +-- ---------------------------------------------------------------------------- diff --git a/docs/develop/kernel/scsi_asc-num-20130919.txt b/docs/develop/kernel/scsi_asc-num-20130919.txt new file mode 100644 index 0000000..72cc30a --- /dev/null +++ b/docs/develop/kernel/scsi_asc-num-20130919.txt @@ -0,0 +1,728 @@ +File: ASC-NUM.TXT + +SCSI ASC/ASCQ Assignments +Numeric Sorted Listing +as of 9/19/13 + + D - DIRECT ACCESS DEVICE (SBC-3) device column key + .T - SEQUENTIAL ACCESS DEVICE (SSC-3) ------------------- + . L - PRINTER DEVICE (SSC) blank = reserved + . P - PROCESSOR DEVICE (SPC-2) not blank = allowed + . .W - WRITE ONCE READ MULTIPLE DEVICE (SBC) + . . R - C/DVD DEVICE (MMC-6) + . . O - OPTICAL MEMORY DEVICE (SBC) + . . .M - MEDIA CHANGER DEVICE (SMC-3) + . . . A - STORAGE ARRAY DEVICE (SCC-2) + . . . E - ENCLOSURE SERVICES DEVICE (SES-2) + . . . .B - SIMPLIFIED DIRECT-ACCESS DEVICE (RBC) + . . . . K - OPTICAL CARD READER/WRITER DEVICE (OCRW) + . . . . V - AUTOMATION/DRIVE INTERFACE (ADC-2) + . . . . .F - OBJECT-BASED STORAGE (OSD-2) +ASC/ASCQ DTLPWROMAEBKVF Description +------- -------------- ---------------------------------------------------- +00h/00h DTLPWROMAEBKVF NO ADDITIONAL SENSE INFORMATION +00h/01h T FILEMARK DETECTED +00h/02h T END-OF-PARTITION/MEDIUM DETECTED +00h/03h T SETMARK DETECTED +00h/04h T BEGINNING-OF-PARTITION/MEDIUM DETECTED +00h/05h TL END-OF-DATA DETECTED +00h/06h DTLPWROMAEBKVF I/O PROCESS TERMINATED +00h/07h T PROGRAMMABLE EARLY WARNING DETECTED +00h/11h R AUDIO PLAY OPERATION IN PROGRESS +00h/12h R AUDIO PLAY OPERATION PAUSED +00h/13h R AUDIO PLAY OPERATION SUCCESSFULLY COMPLETED +00h/14h R AUDIO PLAY OPERATION STOPPED DUE TO ERROR +00h/15h R NO CURRENT AUDIO STATUS TO RETURN +00h/16h DTLPWROMAEBKVF OPERATION IN PROGRESS +00h/17h DTL WROMAEBKVF CLEANING REQUESTED +00h/18h T ERASE OPERATION IN PROGRESS +00h/19h T LOCATE OPERATION IN PROGRESS +00h/1Ah T REWIND OPERATION IN PROGRESS +00h/1Bh T SET CAPACITY OPERATION IN PROGRESS +00h/1Ch T VERIFY OPERATION IN PROGRESS +00h/1Dh DT B ATA PASS THROUGH INFORMATION AVAILABLE +00h/1Eh DT R MAEBKV CONFLICTING SA CREATION REQUEST +00h/1Fh DT B LOGICAL UNIT TRANSITIONING TO ANOTHER POWER CONDITION +00h/20h DT P B EXTENDED COPY INFORMATION AVAILABLE +01h/00h D W O BK NO INDEX/SECTOR SIGNAL +02h/00h D WRO BK NO SEEK COMPLETE +03h/00h DTL W O BK PERIPHERAL DEVICE WRITE FAULT +03h/01h T NO WRITE CURRENT +03h/02h T EXCESSIVE WRITE ERRORS +04h/00h DTLPWROMAEBKVF LOGICAL UNIT NOT READY, CAUSE NOT REPORTABLE +04h/01h DTLPWROMAEBKVF LOGICAL UNIT IS IN PROCESS OF BECOMING READY +04h/02h DTLPWROMAEBKVF LOGICAL UNIT NOT READY, INITIALIZING COMMAND REQUIRED +04h/03h DTLPWROMAEBKVF LOGICAL UNIT NOT READY, MANUAL INTERVENTION REQUIRED +04h/04h DTL RO B LOGICAL UNIT NOT READY, FORMAT IN PROGRESS +04h/05h DT W O A BK F LOGICAL UNIT NOT READY, REBUILD IN PROGRESS +04h/06h DT W O A BK LOGICAL UNIT NOT READY, RECALCULATION IN PROGRESS +04h/07h DTLPWROMAEBKVF LOGICAL UNIT NOT READY, OPERATION IN PROGRESS +04h/08h R LOGICAL UNIT NOT READY, LONG WRITE IN PROGRESS +04h/09h DTLPWROMAEBKVF LOGICAL UNIT NOT READY, SELF-TEST IN PROGRESS +04h/0Ah DTLPWROMAEBKVF LOGICAL UNIT NOT ACCESSIBLE, ASYMMETRIC ACCESS STATE TRANSITION +04h/0Bh DTLPWROMAEBKVF LOGICAL UNIT NOT ACCESSIBLE, TARGET PORT IN STANDBY STATE +04h/0Ch DTLPWROMAEBKVF LOGICAL UNIT NOT ACCESSIBLE, TARGET PORT IN UNAVAILABLE STATE +04h/0Dh F LOGICAL UNIT NOT READY, STRUCTURE CHECK REQUIRED +04h/10h DT WROM B LOGICAL UNIT NOT READY, AUXILIARY MEMORY NOT ACCESSIBLE +04h/11h DT WRO AEB VF LOGICAL UNIT NOT READY, NOTIFY (ENABLE SPINUP) REQUIRED +04h/12h M V LOGICAL UNIT NOT READY, OFFLINE +04h/13h DT R MAEBKV LOGICAL UNIT NOT READY, SA CREATION IN PROGRESS +04h/14h D B LOGICAL UNIT NOT READY, SPACE ALLOCATION IN PROGRESS +04h/15h M LOGICAL UNIT NOT READY, ROBOTICS DISABLED +04h/16h M LOGICAL UNIT NOT READY, CONFIGURATION REQUIRED +04h/17h M LOGICAL UNIT NOT READY, CALIBRATION REQUIRED +04h/18h M LOGICAL UNIT NOT READY, A DOOR IS OPEN +04h/19h M LOGICAL UNIT NOT READY, OPERATING IN SEQUENTIAL MODE +04h/1Ah D B LOGICAL UNIT NOT READY, START STOP UNIT COMMAND IN PROGRESS +04h/1Bh D B LOGICAL UNIT NOT READY, SANITIZE IN PROGRESS +04h/1Ch DT MAEB LOGICAL UNIT NOT READY, ADDITIONAL POWER USE NOT YET GRANTED +04h/1Dh D LOGICAL UNIT NOT READY, CONFIGURATION IN PROGRESS +04h/1Eh D LOGICAL UNIT NOT READY, MICROCODE ACTIVATION REQUIRED +05h/00h DTL WROMAEBKVF LOGICAL UNIT DOES NOT RESPOND TO SELECTION +06h/00h D WROM BK NO REFERENCE POSITION FOUND +07h/00h DTL WROM BK MULTIPLE PERIPHERAL DEVICES SELECTED +08h/00h DTL WROMAEBKVF LOGICAL UNIT COMMUNICATION FAILURE +08h/01h DTL WROMAEBKVF LOGICAL UNIT COMMUNICATION TIME-OUT +08h/02h DTL WROMAEBKVF LOGICAL UNIT COMMUNICATION PARITY ERROR +08h/03h DT ROM BK LOGICAL UNIT COMMUNICATION CRC ERROR (ULTRA-DMA/32) +08h/04h DTLPWRO K UNREACHABLE COPY TARGET +09h/00h DT WRO B TRACK FOLLOWING ERROR +09h/01h WRO K TRACKING SERVO FAILURE +09h/02h WRO K FOCUS SERVO FAILURE +09h/03h WRO SPINDLE SERVO FAILURE +09h/04h DT WRO B HEAD SELECT FAULT +0Ah/00h DTLPWROMAEBKVF ERROR LOG OVERFLOW +0Bh/00h DTLPWROMAEBKVF WARNING +0Bh/01h DTLPWROMAEBKVF WARNING - SPECIFIED TEMPERATURE EXCEEDED +0Bh/02h DTLPWROMAEBKVF WARNING - ENCLOSURE DEGRADED +0Bh/03h DTLPWROMAEBKVF WARNING - BACKGROUND SELF-TEST FAILED +0Bh/04h DTLPWRO AEBKVF WARNING - BACKGROUND PRE-SCAN DETECTED MEDIUM ERROR +0Bh/05h DTLPWRO AEBKVF WARNING - BACKGROUND MEDIUM SCAN DETECTED MEDIUM ERROR +0Bh/06h DTLPWROMAEBKVF WARNING - NON-VOLATILE CACHE NOW VOLATILE +0Bh/07h DTLPWROMAEBKVF WARNING - DEGRADED POWER TO NON-VOLATILE CACHE +0Bh/08h DTLPWROMAEBKVF WARNING - POWER LOSS EXPECTED +0Bh/09h D WARNING - DEVICE STATISTICS NOTIFICATION ACTIVE +0Ch/00h T R WRITE ERROR +0Ch/01h K WRITE ERROR - RECOVERED WITH AUTO REALLOCATION +0Ch/02h D W O BK WRITE ERROR - AUTO REALLOCATION FAILED +0Ch/03h D W O BK WRITE ERROR - RECOMMEND REASSIGNMENT +0Ch/04h DT W O B COMPRESSION CHECK MISCOMPARE ERROR +0Ch/05h DT W O B DATA EXPANSION OCCURRED DURING COMPRESSION +0Ch/06h DT W O B BLOCK NOT COMPRESSIBLE +0Ch/07h R WRITE ERROR - RECOVERY NEEDED +0Ch/08h R WRITE ERROR - RECOVERY FAILED +0Ch/09h R WRITE ERROR - LOSS OF STREAMING +0Ch/0Ah R WRITE ERROR - PADDING BLOCKS ADDED +0Ch/0Bh DT WROM B AUXILIARY MEMORY WRITE ERROR +0Ch/0Ch DTLPWRO AEBKVF WRITE ERROR - UNEXPECTED UNSOLICITED DATA +0Ch/0Dh DTLPWRO AEBKVF WRITE ERROR - NOT ENOUGH UNSOLICITED DATA +0Ch/0Eh DT W O BK MULTIPLE WRITE ERRORS +0Ch/0Fh R DEFECTS IN ERROR WINDOW +0Dh/00h DTLPWRO A K ERROR DETECTED BY THIRD PARTY TEMPORARY INITIATOR +0Dh/01h DTLPWRO A K THIRD PARTY DEVICE FAILURE +0Dh/02h DTLPWRO A K COPY TARGET DEVICE NOT REACHABLE +0Dh/03h DTLPWRO A K INCORRECT COPY TARGET DEVICE TYPE +0Dh/04h DTLPWRO A K COPY TARGET DEVICE DATA UNDERRUN +0Dh/05h DTLPWRO A K COPY TARGET DEVICE DATA OVERRUN +0Eh/00h DT PWROMAEBK F INVALID INFORMATION UNIT +0Eh/01h DT PWROMAEBK F INFORMATION UNIT TOO SHORT +0Eh/02h DT PWROMAEBK F INFORMATION UNIT TOO LONG +0Eh/03h DT P R MAEBK F INVALID FIELD IN COMMAND INFORMATION UNIT +0Fh/00h +10h/00h D W O BK ID CRC OR ECC ERROR +10h/01h DT W O LOGICAL BLOCK GUARD CHECK FAILED +10h/02h DT W O LOGICAL BLOCK APPLICATION TAG CHECK FAILED +10h/03h DT W O LOGICAL BLOCK REFERENCE TAG CHECK FAILED +10h/04h T LOGICAL BLOCK PROTECTION ERROR ON RECOVER BUFFERED DATA +10h/05h T LOGICAL BLOCK PROTECTION METHOD ERROR +11h/00h DT WRO BK UNRECOVERED READ ERROR +11h/01h DT WRO BK READ RETRIES EXHAUSTED +11h/02h DT WRO BK ERROR TOO LONG TO CORRECT +11h/03h DT W O BK MULTIPLE READ ERRORS +11h/04h D W O BK UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED +11h/05h WRO B L-EC UNCORRECTABLE ERROR +11h/06h WRO B CIRC UNRECOVERED ERROR +11h/07h W O B DATA RE-SYNCHRONIZATION ERROR +11h/08h T INCOMPLETE BLOCK READ +11h/09h T NO GAP FOUND +11h/0Ah DT O BK MISCORRECTED ERROR +11h/0Bh D W O BK UNRECOVERED READ ERROR - RECOMMEND REASSIGNMENT +11h/0Ch D W O BK UNRECOVERED READ ERROR - RECOMMEND REWRITE THE DATA +11h/0Dh DT WRO B DE-COMPRESSION CRC ERROR +11h/0Eh DT WRO B CANNOT DECOMPRESS USING DECLARED ALGORITHM +11h/0Fh R ERROR READING UPC/EAN NUMBER +11h/10h R ERROR READING ISRC NUMBER +11h/11h R READ ERROR - LOSS OF STREAMING +11h/12h DT WROM B AUXILIARY MEMORY READ ERROR +11h/13h DTLPWRO AEBKVF READ ERROR - FAILED RETRANSMISSION REQUEST +11h/14h D READ ERROR - LBA MARKED BAD BY APPLICATION CLIENT +11h/15h D WRITE AFTER SANITIZE REQUIRED +12h/00h D W O BK ADDRESS MARK NOT FOUND FOR ID FIELD +13h/00h D W O BK ADDRESS MARK NOT FOUND FOR DATA FIELD +14h/00h DTL WRO BK RECORDED ENTITY NOT FOUND +14h/01h DT WRO BK RECORD NOT FOUND +14h/02h T FILEMARK OR SETMARK NOT FOUND +14h/03h T END-OF-DATA NOT FOUND +14h/04h T BLOCK SEQUENCE ERROR +14h/05h DT W O BK RECORD NOT FOUND - RECOMMEND REASSIGNMENT +14h/06h DT W O BK RECORD NOT FOUND - DATA AUTO-REALLOCATED +14h/07h T LOCATE OPERATION FAILURE +15h/00h DTL WROM BK RANDOM POSITIONING ERROR +15h/01h DTL WROM BK MECHANICAL POSITIONING ERROR +15h/02h DT WRO BK POSITIONING ERROR DETECTED BY READ OF MEDIUM +16h/00h D W O BK DATA SYNCHRONIZATION MARK ERROR +16h/01h D W O BK DATA SYNC ERROR - DATA REWRITTEN +16h/02h D W O BK DATA SYNC ERROR - RECOMMEND REWRITE +16h/03h D W O BK DATA SYNC ERROR - DATA AUTO-REALLOCATED +16h/04h D W O BK DATA SYNC ERROR - RECOMMEND REASSIGNMENT +17h/00h DT WRO BK RECOVERED DATA WITH NO ERROR CORRECTION APPLIED +17h/01h DT WRO BK RECOVERED DATA WITH RETRIES +17h/02h DT WRO BK RECOVERED DATA WITH POSITIVE HEAD OFFSET +17h/03h DT WRO BK RECOVERED DATA WITH NEGATIVE HEAD OFFSET +17h/04h WRO B RECOVERED DATA WITH RETRIES AND/OR CIRC APPLIED +17h/05h D WRO BK RECOVERED DATA USING PREVIOUS SECTOR ID +17h/06h D W O BK RECOVERED DATA WITHOUT ECC - DATA AUTO-REALLOCATED +17h/07h D WRO BK RECOVERED DATA WITHOUT ECC - RECOMMEND REASSIGNMENT +17h/08h D WRO BK RECOVERED DATA WITHOUT ECC - RECOMMEND REWRITE +17h/09h D WRO BK RECOVERED DATA WITHOUT ECC - DATA REWRITTEN +18h/00h DT WRO BK RECOVERED DATA WITH ERROR CORRECTION APPLIED +18h/01h D WRO BK RECOVERED DATA WITH ERROR CORR. & RETRIES APPLIED +18h/02h D WRO BK RECOVERED DATA - DATA AUTO-REALLOCATED +18h/03h R RECOVERED DATA WITH CIRC +18h/04h R RECOVERED DATA WITH L-EC +18h/05h D WRO BK RECOVERED DATA - RECOMMEND REASSIGNMENT +18h/06h D WRO BK RECOVERED DATA - RECOMMEND REWRITE +18h/07h D W O BK RECOVERED DATA WITH ECC - DATA REWRITTEN +18h/08h R RECOVERED DATA WITH LINKING +19h/00h D O K DEFECT LIST ERROR +19h/01h D O K DEFECT LIST NOT AVAILABLE +19h/02h D O K DEFECT LIST ERROR IN PRIMARY LIST +19h/03h D O K DEFECT LIST ERROR IN GROWN LIST +1Ah/00h DTLPWROMAEBKVF PARAMETER LIST LENGTH ERROR +1Bh/00h DTLPWROMAEBKVF SYNCHRONOUS DATA TRANSFER ERROR +1Ch/00h D O BK DEFECT LIST NOT FOUND +1Ch/01h D O BK PRIMARY DEFECT LIST NOT FOUND +1Ch/02h D O BK GROWN DEFECT LIST NOT FOUND +1Dh/00h DT WRO BK MISCOMPARE DURING VERIFY OPERATION +1Dh/01h D B MISCOMPARE VERIFY OF UNMAPPED LBA +1Eh/00h D W O BK RECOVERED ID WITH ECC CORRECTION +1Fh/00h D O K PARTIAL DEFECT LIST TRANSFER +20h/00h DTLPWROMAEBKVF INVALID COMMAND OPERATION CODE +20h/01h DT PWROMAEBK ACCESS DENIED - INITIATOR PENDING-ENROLLED +20h/02h DT PWROMAEBK ACCESS DENIED - NO ACCESS RIGHTS +20h/03h DT PWROMAEBK ACCESS DENIED - INVALID MGMT ID KEY +20h/04h T ILLEGAL COMMAND WHILE IN WRITE CAPABLE STATE +20h/05h T Obsolete +20h/06h T ILLEGAL COMMAND WHILE IN EXPLICIT ADDRESS MODE +20h/07h T ILLEGAL COMMAND WHILE IN IMPLICIT ADDRESS MODE +20h/08h DT PWROMAEBK ACCESS DENIED - ENROLLMENT CONFLICT +20h/09h DT PWROMAEBK ACCESS DENIED - INVALID LU IDENTIFIER +20h/0Ah DT PWROMAEBK ACCESS DENIED - INVALID PROXY TOKEN +20h/0Bh DT PWROMAEBK ACCESS DENIED - ACL LUN CONFLICT +20h/0Ch T ILLEGAL COMMAND WHEN NOT IN APPEND-ONLY MODE +21h/00h DT WRO BK LOGICAL BLOCK ADDRESS OUT OF RANGE +21h/01h DT WROM BK INVALID ELEMENT ADDRESS +21h/02h R INVALID ADDRESS FOR WRITE +21h/03h R INVALID WRITE CROSSING LAYER JUMP +22h/00h D ILLEGAL FUNCTION (USE 20 00, 24 00, OR 26 00) +23h/00h DT P B INVALID TOKEN OPERATION, CAUSE NOT REPORTABLE +23h/01h DT P B INVALID TOKEN OPERATION, UNSUPPORTED TOKEN TYPE +23h/02h DT P B INVALID TOKEN OPERATION, REMOTE TOKEN USAGE NOT SUPPORTED +23h/03h DT P B INVALID TOKEN OPERATION, REMOTE ROD TOKEN CREATION NOT SUPPORTED +23h/04h DT P B INVALID TOKEN OPERATION, TOKEN UNKNOWN +23h/05h DT P B INVALID TOKEN OPERATION, TOKEN CORRUPT +23h/06h DT P B INVALID TOKEN OPERATION, TOKEN REVOKED +23h/07h DT P B INVALID TOKEN OPERATION, TOKEN EXPIRED +23h/08h DT P B INVALID TOKEN OPERATION, TOKEN CANCELLED +23h/09h DT P B INVALID TOKEN OPERATION, TOKEN DELETED +23h/0Ah DT P B INVALID TOKEN OPERATION, INVALID TOKEN LENGTH +24h/00h DTLPWROMAEBKVF INVALID FIELD IN CDB +24h/01h DTLPWRO AEBKVF CDB DECRYPTION ERROR +24h/02h T Obsolete +24h/03h T Obsolete +24h/04h F SECURITY AUDIT VALUE FROZEN +24h/05h F SECURITY WORKING KEY FROZEN +24h/06h F NONCE NOT UNIQUE +24h/07h F NONCE TIMESTAMP OUT OF RANGE +24h/08h DT R MAEBKV INVALID XCDB +25h/00h DTLPWROMAEBKVF LOGICAL UNIT NOT SUPPORTED +26h/00h DTLPWROMAEBKVF INVALID FIELD IN PARAMETER LIST +26h/01h DTLPWROMAEBKVF PARAMETER NOT SUPPORTED +26h/02h DTLPWROMAEBKVF PARAMETER VALUE INVALID +26h/03h DTLPWROMAE K THRESHOLD PARAMETERS NOT SUPPORTED +26h/04h DTLPWROMAEBKVF INVALID RELEASE OF PERSISTENT RESERVATION +26h/05h DTLPWRO A BK DATA DECRYPTION ERROR +26h/06h DTLPWRO K TOO MANY TARGET DESCRIPTORS +26h/07h DTLPWRO K UNSUPPORTED TARGET DESCRIPTOR TYPE CODE +26h/08h DTLPWRO K TOO MANY SEGMENT DESCRIPTORS +26h/09h DTLPWRO K UNSUPPORTED SEGMENT DESCRIPTOR TYPE CODE +26h/0Ah DTLPWRO K UNEXPECTED INEXACT SEGMENT +26h/0Bh DTLPWRO K INLINE DATA LENGTH EXCEEDED +26h/0Ch DTLPWRO K INVALID OPERATION FOR COPY SOURCE OR DESTINATION +26h/0Dh DTLPWRO K COPY SEGMENT GRANULARITY VIOLATION +26h/0Eh DT PWROMAEBK INVALID PARAMETER WHILE PORT IS ENABLED +26h/0Fh F INVALID DATA-OUT BUFFER INTEGRITY CHECK VALUE +26h/10h T DATA DECRYPTION KEY FAIL LIMIT REACHED +26h/11h T INCOMPLETE KEY-ASSOCIATED DATA SET +26h/12h T VENDOR SPECIFIC KEY REFERENCE NOT FOUND +27h/00h DT WRO BK WRITE PROTECTED +27h/01h DT WRO BK HARDWARE WRITE PROTECTED +27h/02h DT WRO BK LOGICAL UNIT SOFTWARE WRITE PROTECTED +27h/03h T R ASSOCIATED WRITE PROTECT +27h/04h T R PERSISTENT WRITE PROTECT +27h/05h T R PERMANENT WRITE PROTECT +27h/06h R F CONDITIONAL WRITE PROTECT +27h/07h D B SPACE ALLOCATION FAILED WRITE PROTECT +28h/00h DTLPWROMAEBKVF NOT READY TO READY CHANGE, MEDIUM MAY HAVE CHANGED +28h/01h DT WROM B IMPORT OR EXPORT ELEMENT ACCESSED +28h/02h R FORMAT-LAYER MAY HAVE CHANGED +28h/03h M IMPORT/EXPORT ELEMENT ACCESSED, MEDIUM CHANGED +29h/00h DTLPWROMAEBKVF POWER ON, RESET, OR BUS DEVICE RESET OCCURRED +29h/01h DTLPWROMAEBKVF POWER ON OCCURRED +29h/02h DTLPWROMAEBKVF SCSI BUS RESET OCCURRED +29h/03h DTLPWROMAEBKVF BUS DEVICE RESET FUNCTION OCCURRED +29h/04h DTLPWROMAEBKVF DEVICE INTERNAL RESET +29h/05h DTLPWROMAEBKVF TRANSCEIVER MODE CHANGED TO SINGLE-ENDED +29h/06h DTLPWROMAEBKVF TRANSCEIVER MODE CHANGED TO LVD +29h/07h DTLPWROMAEBKVF I_T NEXUS LOSS OCCURRED +2Ah/00h DTL WROMAEBKVF PARAMETERS CHANGED +2Ah/01h DTL WROMAEBKVF MODE PARAMETERS CHANGED +2Ah/02h DTL WROMAE K LOG PARAMETERS CHANGED +2Ah/03h DTLPWROMAE K RESERVATIONS PREEMPTED +2Ah/04h DTLPWROMAE RESERVATIONS RELEASED +2Ah/05h DTLPWROMAE REGISTRATIONS PREEMPTED +2Ah/06h DTLPWROMAEBKVF ASYMMETRIC ACCESS STATE CHANGED +2Ah/07h DTLPWROMAEBKVF IMPLICIT ASYMMETRIC ACCESS STATE TRANSITION FAILED +2Ah/08h DT WROMAEBKVF PRIORITY CHANGED +2Ah/09h D CAPACITY DATA HAS CHANGED +2Ah/0Ah DT ERROR HISTORY I_T NEXUS CLEARED +2Ah/0Bh DT ERROR HISTORY SNAPSHOT RELEASED +2Ah/0Ch F ERROR RECOVERY ATTRIBUTES HAVE CHANGED +2Ah/0Dh T DATA ENCRYPTION CAPABILITIES CHANGED +2Ah/10h DT M E V TIMESTAMP CHANGED +2Ah/11h T DATA ENCRYPTION PARAMETERS CHANGED BY ANOTHER I_T NEXUS +2Ah/12h T DATA ENCRYPTION PARAMETERS CHANGED BY VENDOR SPECIFIC EVENT +2Ah/13h T DATA ENCRYPTION KEY INSTANCE COUNTER HAS CHANGED +2Ah/14h DT R MAEBKV SA CREATION CAPABILITIES DATA HAS CHANGED +2Ah/15h T M V MEDIUM REMOVAL PREVENTION PREEMPTED +2Bh/00h DTLPWRO K COPY CANNOT EXECUTE SINCE HOST CANNOT DISCONNECT +2Ch/00h DTLPWROMAEBKVF COMMAND SEQUENCE ERROR +2Ch/01h TOO MANY WINDOWS SPECIFIED +2Ch/02h INVALID COMBINATION OF WINDOWS SPECIFIED +2Ch/03h R CURRENT PROGRAM AREA IS NOT EMPTY +2Ch/04h R CURRENT PROGRAM AREA IS EMPTY +2Ch/05h B ILLEGAL POWER CONDITION REQUEST +2Ch/06h R PERSISTENT PREVENT CONFLICT +2Ch/07h DTLPWROMAEBKVF PREVIOUS BUSY STATUS +2Ch/08h DTLPWROMAEBKVF PREVIOUS TASK SET FULL STATUS +2Ch/09h DTLPWROM EBKVF PREVIOUS RESERVATION CONFLICT STATUS +2Ch/0Ah F PARTITION OR COLLECTION CONTAINS USER OBJECTS +2Ch/0Bh T NOT RESERVED +2Ch/0Ch D ORWRITE GENERATION DOES NOT MATCH +2Dh/00h T OVERWRITE ERROR ON UPDATE IN PLACE +2Eh/00h D WROM B INSUFFICIENT TIME FOR OPERATION +2Eh/01h D W OM B COMMAND TIMEOUT BEFORE PROCESSING +2Eh/02h D W OM B COMMAND TIMEOUT DURING PROCESSING +2Eh/03h D W OM B COMMAND TIMEOUT DURING PROCESSING DUE TO ERROR RECOVERY +2Fh/00h DTLPWROMAEBKVF COMMANDS CLEARED BY ANOTHER INITIATOR +2Fh/01h D COMMANDS CLEARED BY POWER LOSS NOTIFICATION +2Fh/02h DTLPWROMAEBKVF COMMANDS CLEARED BY DEVICE SERVER +2Fh/03h DTLPWROMAEBKVF SOME COMMANDS CLEARED BY QUEUING LAYER EVENT +30h/00h DT WROM BK INCOMPATIBLE MEDIUM INSTALLED +30h/01h DT WRO BK CANNOT READ MEDIUM - UNKNOWN FORMAT +30h/02h DT WRO BK CANNOT READ MEDIUM - INCOMPATIBLE FORMAT +30h/03h DT R M K CLEANING CARTRIDGE INSTALLED +30h/04h DT WRO BK CANNOT WRITE MEDIUM - UNKNOWN FORMAT +30h/05h DT WRO BK CANNOT WRITE MEDIUM - INCOMPATIBLE FORMAT +30h/06h DT WRO B CANNOT FORMAT MEDIUM - INCOMPATIBLE MEDIUM +30h/07h DTL WROMAEBKVF CLEANING FAILURE +30h/08h R CANNOT WRITE - APPLICATION CODE MISMATCH +30h/09h R CURRENT SESSION NOT FIXATED FOR APPEND +30h/0Ah DT WRO AEBK CLEANING REQUEST REJECTED +30h/0Ch T WORM MEDIUM - OVERWRITE ATTEMPTED +30h/0Dh T WORM MEDIUM - INTEGRITY CHECK +30h/10h R MEDIUM NOT FORMATTED +30h/11h M INCOMPATIBLE VOLUME TYPE +30h/12h M INCOMPATIBLE VOLUME QUALIFIER +30h/13h M CLEANING VOLUME EXPIRED +31h/00h DT WRO BK MEDIUM FORMAT CORRUPTED +31h/01h D L RO B FORMAT COMMAND FAILED +31h/02h R ZONED FORMATTING FAILED DUE TO SPARE LINKING +31h/03h D B SANITIZE COMMAND FAILED +32h/00h D W O BK NO DEFECT SPARE LOCATION AVAILABLE +32h/01h D W O BK DEFECT LIST UPDATE FAILURE +33h/00h T TAPE LENGTH ERROR +34h/00h DTLPWROMAEBKVF ENCLOSURE FAILURE +35h/00h DTLPWROMAEBKVF ENCLOSURE SERVICES FAILURE +35h/01h DTLPWROMAEBKVF UNSUPPORTED ENCLOSURE FUNCTION +35h/02h DTLPWROMAEBKVF ENCLOSURE SERVICES UNAVAILABLE +35h/03h DTLPWROMAEBKVF ENCLOSURE SERVICES TRANSFER FAILURE +35h/04h DTLPWROMAEBKVF ENCLOSURE SERVICES TRANSFER REFUSED +35h/05h DTL WROMAEBKVF ENCLOSURE SERVICES CHECKSUM ERROR +36h/00h L RIBBON, INK, OR TONER FAILURE +37h/00h DTL WROMAEBKVF ROUNDED PARAMETER +38h/00h B EVENT STATUS NOTIFICATION +38h/02h B ESN - POWER MANAGEMENT CLASS EVENT +38h/04h B ESN - MEDIA CLASS EVENT +38h/06h B ESN - DEVICE BUSY CLASS EVENT +38h/07h D THIN PROVISIONING SOFT THRESHOLD REACHED +39h/00h DTL WROMAE K SAVING PARAMETERS NOT SUPPORTED +3Ah/00h DTL WROM BK MEDIUM NOT PRESENT +3Ah/01h DT WROM BK MEDIUM NOT PRESENT - TRAY CLOSED +3Ah/02h DT WROM BK MEDIUM NOT PRESENT - TRAY OPEN +3Ah/03h DT WROM B MEDIUM NOT PRESENT - LOADABLE +3Ah/04h DT WRO B MEDIUM NOT PRESENT - MEDIUM AUXILIARY MEMORY ACCESSIBLE +3Bh/00h TL SEQUENTIAL POSITIONING ERROR +3Bh/01h T TAPE POSITION ERROR AT BEGINNING-OF-MEDIUM +3Bh/02h T TAPE POSITION ERROR AT END-OF-MEDIUM +3Bh/03h L TAPE OR ELECTRONIC VERTICAL FORMS UNIT NOT READY +3Bh/04h L SLEW FAILURE +3Bh/05h L PAPER JAM +3Bh/06h L FAILED TO SENSE TOP-OF-FORM +3Bh/07h L FAILED TO SENSE BOTTOM-OF-FORM +3Bh/08h T REPOSITION ERROR +3Bh/09h READ PAST END OF MEDIUM +3Bh/0Ah READ PAST BEGINNING OF MEDIUM +3Bh/0Bh POSITION PAST END OF MEDIUM +3Bh/0Ch T POSITION PAST BEGINNING OF MEDIUM +3Bh/0Dh DT WROM BK MEDIUM DESTINATION ELEMENT FULL +3Bh/0Eh DT WROM BK MEDIUM SOURCE ELEMENT EMPTY +3Bh/0Fh R END OF MEDIUM REACHED +3Bh/11h DT WROM BK MEDIUM MAGAZINE NOT ACCESSIBLE +3Bh/12h DT WROM BK MEDIUM MAGAZINE REMOVED +3Bh/13h DT WROM BK MEDIUM MAGAZINE INSERTED +3Bh/14h DT WROM BK MEDIUM MAGAZINE LOCKED +3Bh/15h DT WROM BK MEDIUM MAGAZINE UNLOCKED +3Bh/16h R MECHANICAL POSITIONING OR CHANGER ERROR +3Bh/17h F READ PAST END OF USER OBJECT +3Bh/18h M ELEMENT DISABLED +3Bh/19h M ELEMENT ENABLED +3Bh/1Ah M DATA TRANSFER DEVICE REMOVED +3Bh/1Bh M DATA TRANSFER DEVICE INSERTED +3Bh/1Ch T TOO MANY LOGICAL OBJECTS ON PARTITION TO SUPPORT OPERATION +3Ch/00h +3Dh/00h DTLPWROMAE K INVALID BITS IN IDENTIFY MESSAGE +3Eh/00h DTLPWROMAEBKVF LOGICAL UNIT HAS NOT SELF-CONFIGURED YET +3Eh/01h DTLPWROMAEBKVF LOGICAL UNIT FAILURE +3Eh/02h DTLPWROMAEBKVF TIMEOUT ON LOGICAL UNIT +3Eh/03h DTLPWROMAEBKVF LOGICAL UNIT FAILED SELF-TEST +3Eh/04h DTLPWROMAEBKVF LOGICAL UNIT UNABLE TO UPDATE SELF-TEST LOG +3Fh/00h DTLPWROMAEBKVF TARGET OPERATING CONDITIONS HAVE CHANGED +3Fh/01h DTLPWROMAEBKVF MICROCODE HAS BEEN CHANGED +3Fh/02h DTLPWROM BK CHANGED OPERATING DEFINITION +3Fh/03h DTLPWROMAEBKVF INQUIRY DATA HAS CHANGED +3Fh/04h DT WROMAEBK COMPONENT DEVICE ATTACHED +3Fh/05h DT WROMAEBK DEVICE IDENTIFIER CHANGED +3Fh/06h DT WROMAEB REDUNDANCY GROUP CREATED OR MODIFIED +3Fh/07h DT WROMAEB REDUNDANCY GROUP DELETED +3Fh/08h DT WROMAEB SPARE CREATED OR MODIFIED +3Fh/09h DT WROMAEB SPARE DELETED +3Fh/0Ah DT WROMAEBK VOLUME SET CREATED OR MODIFIED +3Fh/0Bh DT WROMAEBK VOLUME SET DELETED +3Fh/0Ch DT WROMAEBK VOLUME SET DEASSIGNED +3Fh/0Dh DT WROMAEBK VOLUME SET REASSIGNED +3Fh/0Eh DTLPWROMAE REPORTED LUNS DATA HAS CHANGED +3Fh/0Fh DTLPWROMAEBKVF ECHO BUFFER OVERWRITTEN +3Fh/10h DT WROM B MEDIUM LOADABLE +3Fh/11h DT WROM B MEDIUM AUXILIARY MEMORY ACCESSIBLE +3Fh/12h DTLPWR MAEBK F iSCSI IP ADDRESS ADDED +3Fh/13h DTLPWR MAEBK F iSCSI IP ADDRESS REMOVED +3Fh/14h DTLPWR MAEBK F iSCSI IP ADDRESS CHANGED +3Fh/15h DTLPWR MAEBK INSPECT REFERRALS SENSE DESCRIPTORS +40h/00h D RAM FAILURE (SHOULD USE 40 NN) +40h/NNh DTLPWROMAEBKVF DIAGNOSTIC FAILURE ON COMPONENT NN (80h-FFh) +41h/00h D DATA PATH FAILURE (SHOULD USE 40 NN) +42h/00h D POWER-ON OR SELF-TEST FAILURE (SHOULD USE 40 NN) +43h/00h DTLPWROMAEBKVF MESSAGE ERROR +44h/00h DTLPWROMAEBKVF INTERNAL TARGET FAILURE +44h/01h DT P MAEBKVF PERSISTENT RESERVATION INFORMATION LOST +44h/71h DT B ATA DEVICE FAILED SET FEATURES +45h/00h DTLPWROMAEBKVF SELECT OR RESELECT FAILURE +46h/00h DTLPWROM BK UNSUCCESSFUL SOFT RESET +47h/00h DTLPWROMAEBKVF SCSI PARITY ERROR +47h/01h DTLPWROMAEBKVF DATA PHASE CRC ERROR DETECTED +47h/02h DTLPWROMAEBKVF SCSI PARITY ERROR DETECTED DURING ST DATA PHASE +47h/03h DTLPWROMAEBKVF INFORMATION UNIT iuCRC ERROR DETECTED +47h/04h DTLPWROMAEBKVF ASYNCHRONOUS INFORMATION PROTECTION ERROR DETECTED +47h/05h DTLPWROMAEBKVF PROTOCOL SERVICE CRC ERROR +47h/06h DT MAEBKVF PHY TEST FUNCTION IN PROGRESS +47h/7Fh DT PWROMAEBK SOME COMMANDS CLEARED BY ISCSI PROTOCOL EVENT +48h/00h DTLPWROMAEBKVF INITIATOR DETECTED ERROR MESSAGE RECEIVED +49h/00h DTLPWROMAEBKVF INVALID MESSAGE ERROR +4Ah/00h DTLPWROMAEBKVF COMMAND PHASE ERROR +4Bh/00h DTLPWROMAEBKVF DATA PHASE ERROR +4Bh/01h DT PWROMAEBK INVALID TARGET PORT TRANSFER TAG RECEIVED +4Bh/02h DT PWROMAEBK TOO MUCH WRITE DATA +4Bh/03h DT PWROMAEBK ACK/NAK TIMEOUT +4Bh/04h DT PWROMAEBK NAK RECEIVED +4Bh/05h DT PWROMAEBK DATA OFFSET ERROR +4Bh/06h DT PWROMAEBK INITIATOR RESPONSE TIMEOUT +4Bh/07h DT PWROMAEBK F CONNECTION LOST +4Bh/08h DT PWROMAEBK F DATA-IN BUFFER OVERFLOW - DATA BUFFER SIZE +4Bh/09h DT PWROMAEBK F DATA-IN BUFFER OVERFLOW - DATA BUFFER DESCRIPTOR AREA +4Bh/0Ah DT PWROMAEBK F DATA-IN BUFFER ERROR +4Bh/0Bh DT PWROMAEBK F DATA-OUT BUFFER OVERFLOW - DATA BUFFER SIZE +4Bh/0Ch DT PWROMAEBK F DATA-OUT BUFFER OVERFLOW - DATA BUFFER DESCRIPTOR AREA +4Bh/0Dh DT PWROMAEBK F DATA-OUT BUFFER ERROR +4Bh/0Eh DT PWROMAEBK F PCIE FABRIC ERROR +4Bh/0Fh DT PWROMAEBK F PCIE COMPLETION TIMEOUT +4Bh/10h DT PWROMAEBK F PCIE COMPLETER ABORT +4Bh/11h DT PWROMAEBK F PCIE POISONED TLP RECEIVED +4Bh/12h DT PWROMAEBK F PCIE ECRC CHECK FAILED +4Bh/13h DT PWROMAEBK F PCIE UNSUPPORTED REQUEST +4Bh/14h DT PWROMAEBK F PCIE ACS VIOLATION +4Bh/15h DT PWROMAEBK F PCIE TLP PREFIX BLOCKED +4Ch/00h DTLPWROMAEBKVF LOGICAL UNIT FAILED SELF-CONFIGURATION +4Dh/NNh DTLPWROMAEBKVF TAGGED OVERLAPPED COMMANDS (NN = TASK TAG) +4Eh/00h DTLPWROMAEBKVF OVERLAPPED COMMANDS ATTEMPTED +4Fh/00h +50h/00h T WRITE APPEND ERROR +50h/01h T WRITE APPEND POSITION ERROR +50h/02h T POSITION ERROR RELATED TO TIMING +51h/00h T RO ERASE FAILURE +51h/01h R ERASE FAILURE - INCOMPLETE ERASE OPERATION DETECTED +52h/00h T CARTRIDGE FAULT +53h/00h DTL WROM BK MEDIA LOAD OR EJECT FAILED +53h/01h T UNLOAD TAPE FAILURE +53h/02h DT WROM BK MEDIUM REMOVAL PREVENTED +53h/03h M MEDIUM REMOVAL PREVENTED BY DATA TRANSFER ELEMENT +53h/04h T MEDIUM THREAD OR UNTHREAD FAILURE +53h/05h M VOLUME IDENTIFIER INVALID +53h/06h M VOLUME IDENTIFIER MISSING +53h/07h M DUPLICATE VOLUME IDENTIFIER +53h/08h M ELEMENT STATUS UNKNOWN +54h/00h P SCSI TO HOST SYSTEM INTERFACE FAILURE +55h/00h P SYSTEM RESOURCE FAILURE +55h/01h D O BK SYSTEM BUFFER FULL +55h/02h DTLPWROMAE K INSUFFICIENT RESERVATION RESOURCES +55h/03h DTLPWROMAE K INSUFFICIENT RESOURCES +55h/04h DTLPWROMAE K INSUFFICIENT REGISTRATION RESOURCES +55h/05h DT PWROMAEBK INSUFFICIENT ACCESS CONTROL RESOURCES +55h/06h DT WROM B AUXILIARY MEMORY OUT OF SPACE +55h/07h F QUOTA ERROR +55h/08h T MAXIMUM NUMBER OF SUPPLEMENTAL DECRYPTION KEYS EXCEEDED +55h/09h M MEDIUM AUXILIARY MEMORY NOT ACCESSIBLE +55h/0Ah M DATA CURRENTLY UNAVAILABLE +55h/0Bh DTLPWROMAEBKVF INSUFFICIENT POWER FOR OPERATION +55h/0Ch DT P B INSUFFICIENT RESOURCES TO CREATE ROD +55h/0Dh DT P B INSUFFICIENT RESOURCES TO CREATE ROD TOKEN +56h/00h +57h/00h R UNABLE TO RECOVER TABLE-OF-CONTENTS +58h/00h O GENERATION DOES NOT EXIST +59h/00h O UPDATED BLOCK READ +5Ah/00h DTLPWRO BK OPERATOR REQUEST OR STATE CHANGE INPUT +5Ah/01h DT WROM BK OPERATOR MEDIUM REMOVAL REQUEST +5Ah/02h DT WRO A BK OPERATOR SELECTED WRITE PROTECT +5Ah/03h DT WRO A BK OPERATOR SELECTED WRITE PERMIT +5Bh/00h DTLPWROM K LOG EXCEPTION +5Bh/01h DTLPWROM K THRESHOLD CONDITION MET +5Bh/02h DTLPWROM K LOG COUNTER AT MAXIMUM +5Bh/03h DTLPWROM K LOG LIST CODES EXHAUSTED +5Ch/00h D O RPL STATUS CHANGE +5Ch/01h D O SPINDLES SYNCHRONIZED +5Ch/02h D O SPINDLES NOT SYNCHRONIZED +5Dh/00h DTLPWROMAEBKVF FAILURE PREDICTION THRESHOLD EXCEEDED +5Dh/01h R B MEDIA FAILURE PREDICTION THRESHOLD EXCEEDED +5Dh/02h R LOGICAL UNIT FAILURE PREDICTION THRESHOLD EXCEEDED +5Dh/03h R SPARE AREA EXHAUSTION PREDICTION THRESHOLD EXCEEDED +5Dh/10h D B HARDWARE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE +5Dh/11h D B HARDWARE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH +5Dh/12h D B HARDWARE IMPENDING FAILURE DATA ERROR RATE TOO HIGH +5Dh/13h D B HARDWARE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH +5Dh/14h D B HARDWARE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS +5Dh/15h D B HARDWARE IMPENDING FAILURE ACCESS TIMES TOO HIGH +5Dh/16h D B HARDWARE IMPENDING FAILURE START UNIT TIMES TOO HIGH +5Dh/17h D B HARDWARE IMPENDING FAILURE CHANNEL PARAMETRICS +5Dh/18h D B HARDWARE IMPENDING FAILURE CONTROLLER DETECTED +5Dh/19h D B HARDWARE IMPENDING FAILURE THROUGHPUT PERFORMANCE +5Dh/1Ah D B HARDWARE IMPENDING FAILURE SEEK TIME PERFORMANCE +5Dh/1Bh D B HARDWARE IMPENDING FAILURE SPIN-UP RETRY COUNT +5Dh/1Ch D B HARDWARE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT +5Dh/20h D B CONTROLLER IMPENDING FAILURE GENERAL HARD DRIVE FAILURE +5Dh/21h D B CONTROLLER IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH +5Dh/22h D B CONTROLLER IMPENDING FAILURE DATA ERROR RATE TOO HIGH +5Dh/23h D B CONTROLLER IMPENDING FAILURE SEEK ERROR RATE TOO HIGH +5Dh/24h D B CONTROLLER IMPENDING FAILURE TOO MANY BLOCK REASSIGNS +5Dh/25h D B CONTROLLER IMPENDING FAILURE ACCESS TIMES TOO HIGH +5Dh/26h D B CONTROLLER IMPENDING FAILURE START UNIT TIMES TOO HIGH +5Dh/27h D B CONTROLLER IMPENDING FAILURE CHANNEL PARAMETRICS +5Dh/28h D B CONTROLLER IMPENDING FAILURE CONTROLLER DETECTED +5Dh/29h D B CONTROLLER IMPENDING FAILURE THROUGHPUT PERFORMANCE +5Dh/2Ah D B CONTROLLER IMPENDING FAILURE SEEK TIME PERFORMANCE +5Dh/2Bh D B CONTROLLER IMPENDING FAILURE SPIN-UP RETRY COUNT +5Dh/2Ch D B CONTROLLER IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT +5Dh/30h D B DATA CHANNEL IMPENDING FAILURE GENERAL HARD DRIVE FAILURE +5Dh/31h D B DATA CHANNEL IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH +5Dh/32h D B DATA CHANNEL IMPENDING FAILURE DATA ERROR RATE TOO HIGH +5Dh/33h D B DATA CHANNEL IMPENDING FAILURE SEEK ERROR RATE TOO HIGH +5Dh/34h D B DATA CHANNEL IMPENDING FAILURE TOO MANY BLOCK REASSIGNS +5Dh/35h D B DATA CHANNEL IMPENDING FAILURE ACCESS TIMES TOO HIGH +5Dh/36h D B DATA CHANNEL IMPENDING FAILURE START UNIT TIMES TOO HIGH +5Dh/37h D B DATA CHANNEL IMPENDING FAILURE CHANNEL PARAMETRICS +5Dh/38h D B DATA CHANNEL IMPENDING FAILURE CONTROLLER DETECTED +5Dh/39h D B DATA CHANNEL IMPENDING FAILURE THROUGHPUT PERFORMANCE +5Dh/3Ah D B DATA CHANNEL IMPENDING FAILURE SEEK TIME PERFORMANCE +5Dh/3Bh D B DATA CHANNEL IMPENDING FAILURE SPIN-UP RETRY COUNT +5Dh/3Ch D B DATA CHANNEL IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT +5Dh/40h D B SERVO IMPENDING FAILURE GENERAL HARD DRIVE FAILURE +5Dh/41h D B SERVO IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH +5Dh/42h D B SERVO IMPENDING FAILURE DATA ERROR RATE TOO HIGH +5Dh/43h D B SERVO IMPENDING FAILURE SEEK ERROR RATE TOO HIGH +5Dh/44h D B SERVO IMPENDING FAILURE TOO MANY BLOCK REASSIGNS +5Dh/45h D B SERVO IMPENDING FAILURE ACCESS TIMES TOO HIGH +5Dh/46h D B SERVO IMPENDING FAILURE START UNIT TIMES TOO HIGH +5Dh/47h D B SERVO IMPENDING FAILURE CHANNEL PARAMETRICS +5Dh/48h D B SERVO IMPENDING FAILURE CONTROLLER DETECTED +5Dh/49h D B SERVO IMPENDING FAILURE THROUGHPUT PERFORMANCE +5Dh/4Ah D B SERVO IMPENDING FAILURE SEEK TIME PERFORMANCE +5Dh/4Bh D B SERVO IMPENDING FAILURE SPIN-UP RETRY COUNT +5Dh/4Ch D B SERVO IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT +5Dh/50h D B SPINDLE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE +5Dh/51h D B SPINDLE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH +5Dh/52h D B SPINDLE IMPENDING FAILURE DATA ERROR RATE TOO HIGH +5Dh/53h D B SPINDLE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH +5Dh/54h D B SPINDLE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS +5Dh/55h D B SPINDLE IMPENDING FAILURE ACCESS TIMES TOO HIGH +5Dh/56h D B SPINDLE IMPENDING FAILURE START UNIT TIMES TOO HIGH +5Dh/57h D B SPINDLE IMPENDING FAILURE CHANNEL PARAMETRICS +5Dh/58h D B SPINDLE IMPENDING FAILURE CONTROLLER DETECTED +5Dh/59h D B SPINDLE IMPENDING FAILURE THROUGHPUT PERFORMANCE +5Dh/5Ah D B SPINDLE IMPENDING FAILURE SEEK TIME PERFORMANCE +5Dh/5Bh D B SPINDLE IMPENDING FAILURE SPIN-UP RETRY COUNT +5Dh/5Ch D B SPINDLE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT +5Dh/60h D B FIRMWARE IMPENDING FAILURE GENERAL HARD DRIVE FAILURE +5Dh/61h D B FIRMWARE IMPENDING FAILURE DRIVE ERROR RATE TOO HIGH +5Dh/62h D B FIRMWARE IMPENDING FAILURE DATA ERROR RATE TOO HIGH +5Dh/63h D B FIRMWARE IMPENDING FAILURE SEEK ERROR RATE TOO HIGH +5Dh/64h D B FIRMWARE IMPENDING FAILURE TOO MANY BLOCK REASSIGNS +5Dh/65h D B FIRMWARE IMPENDING FAILURE ACCESS TIMES TOO HIGH +5Dh/66h D B FIRMWARE IMPENDING FAILURE START UNIT TIMES TOO HIGH +5Dh/67h D B FIRMWARE IMPENDING FAILURE CHANNEL PARAMETRICS +5Dh/68h D B FIRMWARE IMPENDING FAILURE CONTROLLER DETECTED +5Dh/69h D B FIRMWARE IMPENDING FAILURE THROUGHPUT PERFORMANCE +5Dh/6Ah D B FIRMWARE IMPENDING FAILURE SEEK TIME PERFORMANCE +5Dh/6Bh D B FIRMWARE IMPENDING FAILURE SPIN-UP RETRY COUNT +5Dh/6Ch D B FIRMWARE IMPENDING FAILURE DRIVE CALIBRATION RETRY COUNT +5Dh/FFh DTLPWROMAEBKVF FAILURE PREDICTION THRESHOLD EXCEEDED (FALSE) +5Eh/00h DTLPWRO A K LOW POWER CONDITION ON +5Eh/01h DTLPWRO A K IDLE CONDITION ACTIVATED BY TIMER +5Eh/02h DTLPWRO A K STANDBY CONDITION ACTIVATED BY TIMER +5Eh/03h DTLPWRO A K IDLE CONDITION ACTIVATED BY COMMAND +5Eh/04h DTLPWRO A K STANDBY CONDITION ACTIVATED BY COMMAND +5Eh/05h DTLPWRO A K IDLE_B CONDITION ACTIVATED BY TIMER +5Eh/06h DTLPWRO A K IDLE_B CONDITION ACTIVATED BY COMMAND +5Eh/07h DTLPWRO A K IDLE_C CONDITION ACTIVATED BY TIMER +5Eh/08h DTLPWRO A K IDLE_C CONDITION ACTIVATED BY COMMAND +5Eh/09h DTLPWRO A K STANDBY_Y CONDITION ACTIVATED BY TIMER +5Eh/0Ah DTLPWRO A K STANDBY_Y CONDITION ACTIVATED BY COMMAND +5Eh/41h B POWER STATE CHANGE TO ACTIVE +5Eh/42h B POWER STATE CHANGE TO IDLE +5Eh/43h B POWER STATE CHANGE TO STANDBY +5Eh/45h B POWER STATE CHANGE TO SLEEP +5Eh/47h BK POWER STATE CHANGE TO DEVICE CONTROL +5Fh/00h +60h/00h LAMP FAILURE +61h/00h VIDEO ACQUISITION ERROR +61h/01h UNABLE TO ACQUIRE VIDEO +61h/02h OUT OF FOCUS +62h/00h SCAN HEAD POSITIONING ERROR +63h/00h R END OF USER AREA ENCOUNTERED ON THIS TRACK +63h/01h R PACKET DOES NOT FIT IN AVAILABLE SPACE +64h/00h R ILLEGAL MODE FOR THIS TRACK +64h/01h R INVALID PACKET SIZE +65h/00h DTLPWROMAEBKVF VOLTAGE FAULT +66h/00h AUTOMATIC DOCUMENT FEEDER COVER UP +66h/01h AUTOMATIC DOCUMENT FEEDER LIFT UP +66h/02h DOCUMENT JAM IN AUTOMATIC DOCUMENT FEEDER +66h/03h DOCUMENT MISS FEED AUTOMATIC IN DOCUMENT FEEDER +67h/00h A CONFIGURATION FAILURE +67h/01h A CONFIGURATION OF INCAPABLE LOGICAL UNITS FAILED +67h/02h A ADD LOGICAL UNIT FAILED +67h/03h A MODIFICATION OF LOGICAL UNIT FAILED +67h/04h A EXCHANGE OF LOGICAL UNIT FAILED +67h/05h A REMOVE OF LOGICAL UNIT FAILED +67h/06h A ATTACHMENT OF LOGICAL UNIT FAILED +67h/07h A CREATION OF LOGICAL UNIT FAILED +67h/08h A ASSIGN FAILURE OCCURRED +67h/09h A MULTIPLY ASSIGNED LOGICAL UNIT +67h/0Ah DTLPWROMAEBKVF SET TARGET PORT GROUPS COMMAND FAILED +67h/0Bh DT B ATA DEVICE FEATURE NOT ENABLED +68h/00h A LOGICAL UNIT NOT CONFIGURED +68h/01h D SUBSIDIARY LOGICAL UNIT NOT CONFIGURED +69h/00h A DATA LOSS ON LOGICAL UNIT +69h/01h A MULTIPLE LOGICAL UNIT FAILURES +69h/02h A PARITY/DATA MISMATCH +6Ah/00h A INFORMATIONAL, REFER TO LOG +6Bh/00h A STATE CHANGE HAS OCCURRED +6Bh/01h A REDUNDANCY LEVEL GOT BETTER +6Bh/02h A REDUNDANCY LEVEL GOT WORSE +6Ch/00h A REBUILD FAILURE OCCURRED +6Dh/00h A RECALCULATE FAILURE OCCURRED +6Eh/00h A COMMAND TO LOGICAL UNIT FAILED +6Fh/00h R COPY PROTECTION KEY EXCHANGE FAILURE - AUTHENTICATION FAILURE +6Fh/01h R COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT PRESENT +6Fh/02h R COPY PROTECTION KEY EXCHANGE FAILURE - KEY NOT ESTABLISHED +6Fh/03h R READ OF SCRAMBLED SECTOR WITHOUT AUTHENTICATION +6Fh/04h R MEDIA REGION CODE IS MISMATCHED TO LOGICAL UNIT REGION +6Fh/05h R DRIVE REGION MUST BE PERMANENT/REGION RESET COUNT ERROR +6Fh/06h R INSUFFICIENT BLOCK COUNT FOR BINDING NONCE RECORDING +6Fh/07h R CONFLICT IN BINDING NONCE RECORDING +70h/NNh T DECOMPRESSION EXCEPTION SHORT ALGORITHM ID OF NN +71h/00h T DECOMPRESSION EXCEPTION LONG ALGORITHM ID +72h/00h R SESSION FIXATION ERROR +72h/01h R SESSION FIXATION ERROR WRITING LEAD-IN +72h/02h R SESSION FIXATION ERROR WRITING LEAD-OUT +72h/03h R SESSION FIXATION ERROR - INCOMPLETE TRACK IN SESSION +72h/04h R EMPTY OR PARTIALLY WRITTEN RESERVED TRACK +72h/05h R NO MORE TRACK RESERVATIONS ALLOWED +72h/06h R RMZ EXTENSION IS NOT ALLOWED +72h/07h R NO MORE TEST ZONE EXTENSIONS ARE ALLOWED +73h/00h R CD CONTROL ERROR +73h/01h R POWER CALIBRATION AREA ALMOST FULL +73h/02h R POWER CALIBRATION AREA IS FULL +73h/03h R POWER CALIBRATION AREA ERROR +73h/04h R PROGRAM MEMORY AREA UPDATE FAILURE +73h/05h R PROGRAM MEMORY AREA IS FULL +73h/06h R RMA/PMA IS ALMOST FULL +73h/10h R CURRENT POWER CALIBRATION AREA ALMOST FULL +73h/11h R CURRENT POWER CALIBRATION AREA IS FULL +73h/17h R RDZ IS FULL +74h/00h T SECURITY ERROR +74h/01h T UNABLE TO DECRYPT DATA +74h/02h T UNENCRYPTED DATA ENCOUNTERED WHILE DECRYPTING +74h/03h T INCORRECT DATA ENCRYPTION KEY +74h/04h T CRYPTOGRAPHIC INTEGRITY VALIDATION FAILED +74h/05h T ERROR DECRYPTING DATA +74h/06h T UNKNOWN SIGNATURE VERIFICATION KEY +74h/07h T ENCRYPTION PARAMETERS NOT USEABLE +74h/08h DT R M E VF DIGITAL SIGNATURE VALIDATION FAILURE +74h/09h T ENCRYPTION MODE MISMATCH ON READ +74h/0Ah T ENCRYPTED BLOCK NOT RAW READ ENABLED +74h/0Bh T INCORRECT ENCRYPTION PARAMETERS +74h/0Ch DT R MAEBKV UNABLE TO DECRYPT PARAMETER LIST +74h/0Dh T ENCRYPTION ALGORITHM DISABLED +74h/10h DT R MAEBKV SA CREATION PARAMETER VALUE INVALID +74h/11h DT R MAEBKV SA CREATION PARAMETER VALUE REJECTED +74h/12h DT R MAEBKV INVALID SA USAGE +74h/21h T DATA ENCRYPTION CONFIGURATION PREVENTED +74h/30h DT R MAEBKV SA CREATION PARAMETER NOT SUPPORTED +74h/40h DT R MAEBKV AUTHENTICATION FAILED +74h/61h V EXTERNAL DATA ENCRYPTION KEY MANAGER ACCESS ERROR +74h/62h V EXTERNAL DATA ENCRYPTION KEY MANAGER ERROR +74h/63h V EXTERNAL DATA ENCRYPTION KEY NOT FOUND +74h/64h V EXTERNAL DATA ENCRYPTION REQUEST NOT AUTHORIZED +74h/6Eh T EXTERNAL DATA ENCRYPTION CONTROL TIMEOUT +74h/6Fh T EXTERNAL DATA ENCRYPTION CONTROL ERROR +74h/71h DT R M E V LOGICAL UNIT ACCESS NOT AUTHORIZED +74h/79h D SECURITY CONFLICT IN TRANSLATED DEVICE +75h/00h +76h/00h +77h/00h +78h/00h +79h/00h +7Ah/00h +7Bh/00h +7Ch/00h +7Dh/00h +7Eh/00h +7Fh/00h diff --git a/headers/private/drivers/scsi_sense.h b/headers/private/drivers/scsi_sense.h new file mode 100644 index 0000000..f4f056c --- /dev/null +++ b/headers/private/drivers/scsi_sense.h @@ -0,0 +1,800 @@ +/* + * Copyright 2013, Haiku, Inc. All Rights Reserved. + * Distributed under the terms of the MIT License. + * + * Authors: + * Jérôme Duval + * + * Generated based on http://www.t10.org/lists/asc-num.txt 20130919 + * and http://www.t10.org/lists/2sensekey.htm + */ + + +// "standardized" error code to simplify handling of scsi errors +typedef enum { + err_act_ok, // executed successfully + err_act_retry, // failed, retry 3 times + err_act_fail, // failed, don't retry + err_act_many_retries, // failed, retry multiple times (currently 10 times) + err_act_start, // device requires a "start" command + err_act_invalid_req, // request is invalid + err_act_tur, // device requires a "test unit ready" command + err_act_rescan // device requires a rescan +} err_act; + + +typedef struct _scsi_sense_key_table +{ + uint8 key; + const char * label; + err_act action; + status_t err; +} scsi_sense_key_table; + + +scsi_sense_key_table sSCSISenseKeyTable[] = +{ + { 0x00, "No sense", err_act_ok, B_OK }, + { 0x01, "Recovered error", err_act_ok, B_OK }, + { 0x02, "Not ready", err_act_ok, B_DEV_NOT_READY }, + { 0x03, "Medium error", err_act_fail, B_DEV_RECALIBRATE_ERROR }, + { 0x04, "Hardware error", err_act_fail, B_DEV_SEEK_ERROR }, + { 0x05, "Illegal request", err_act_fail, B_DEV_INVALID_IOCTL }, + { 0x06, "Unit attention", err_act_fail, B_DEV_NOT_READY }, + { 0x07, "Data protect", err_act_fail, B_READ_ONLY_DEVICE }, + { 0x08, "Blank check", err_act_fail, B_DEV_UNREADABLE }, + { 0x09, "Vendor specific", err_act_fail, B_ERROR }, + { 0x0A, "Copy aborted", err_act_fail, B_ERROR }, + { 0x0B, "Aborted command", err_act_fail, B_CANCELED }, + { 0x0D, "Volume overflow", err_act_fail, B_DEV_SEEK_ERROR }, + { 0x0E, "Miscompare", err_act_ok, B_OK }, + { 0x0F, "Completed", err_act_ok, B_OK }, +}; + + +typedef struct _scsi_sense_asc_table +{ + unsigned short asc_ascq; + const char * label; + err_act action; + status_t err; +} scsi_sense_asc_table; + + +scsi_sense_asc_table sSCSISenseAscTable[] = +{ + { 0x0000, "No additional sense information", err_act_ok, B_OK }, // DTLPWROMAEBKVF + { 0x0001, "Filemark detected", err_act_fail, B_ERROR }, // T + { 0x0002, "End-of-partition/medium detected", err_act_fail, B_ERROR }, // T + { 0x0003, "Setmark detected", err_act_fail, B_ERROR }, // T + { 0x0004, "Beginning-of-partition/medium detected", err_act_fail, B_ERROR }, // T + { 0x0005, "End-of-data detected", err_act_fail, B_ERROR }, // TL + { 0x0006, "I/O process terminated", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x0007, "Programmable early warning detected", err_act_fail, B_ERROR }, // T + { 0x0011, "Audio play operation in progress", err_act_fail, B_DEV_NOT_READY }, // R + { 0x0012, "Audio play operation paused", err_act_ok, B_OK }, // R + { 0x0013, "Audio play operation successfully completed", err_act_ok, B_OK }, // R + { 0x0014, "Audio play operation stopped due to error", err_act_fail, B_ERROR }, // R + { 0x0015, "No current audio status to return", err_act_ok, B_OK }, // R + { 0x0016, "Operation in progress", err_act_fail, B_DEV_NOT_READY }, // DTLPWROMAEBKVF + { 0x0017, "Cleaning requested", err_act_fail, B_ERROR }, // DTL WROMAEBKVF + { 0x0018, "Erase operation in progress", err_act_fail, B_ERROR }, // T + { 0x0019, "Locate operation in progress", err_act_fail, B_ERROR }, // T + { 0x001A, "Rewind operation in progress", err_act_fail, B_ERROR }, // T + { 0x001B, "Set capacity operation in progress", err_act_fail, B_ERROR }, // T + { 0x001C, "Verify operation in progress", err_act_fail, B_ERROR }, // T + { 0x001D, "ATA pass through information available", err_act_fail, B_ERROR }, // DT B + { 0x001E, "Conflicting SA creation request", err_act_fail, B_ERROR }, // DT R MAEBKV + { 0x001F, "Logical unit transitioning to another power condition", err_act_fail, B_ERROR }, // DT B + { 0x0020, "Extended copy information available", err_act_fail, B_ERROR }, // DT P B + { 0x0100, "No index/sector signal", err_act_fail, B_ERROR }, // D W O BK + { 0x0200, "No seek complete", err_act_fail, B_ERROR }, // D WRO BK + { 0x0300, "Peripheral device write fault", err_act_fail, B_ERROR }, // DTL W O BK + { 0x0301, "No write current", err_act_fail, B_ERROR }, // T + { 0x0302, "Excessive write errors", err_act_fail, B_ERROR }, // T + { 0x0400, "Logical unit not ready, cause not reportable", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x0401, "Logical unit is in process of becoming ready", err_act_many_retries, B_DEV_NOT_READY }, // DTLPWROMAEBKVF + { 0x0402, "Logical unit not ready, initializing command required", err_act_start, B_NO_INIT }, // DTLPWROMAEBKVF + { 0x0403, "Logical unit not ready, manual intervention required", err_act_fail, B_DEV_NOT_READY }, // DTLPWROMAEBKVF + { 0x0404, "Logical unit not ready, format in progress", err_act_fail, B_DEV_NOT_READY }, // DTL RO B + { 0x0405, "Logical unit not ready, rebuild in progress", err_act_fail, B_DEV_NOT_READY }, // DT W O A BK F + { 0x0406, "Logical unit not ready, recalculation in progress", err_act_fail, B_DEV_NOT_READY }, // DT W O A BK + { 0x0407, "Logical unit not ready, operation in progress", err_act_fail, B_DEV_NOT_READY }, // DTLPWROMAEBKVF + { 0x0408, "Logical unit not ready, long write in progress", err_act_fail, B_DEV_NOT_READY }, // R + { 0x0409, "Logical unit not ready, self-test in progress", err_act_fail, B_DEV_NOT_READY }, // DTLPWROMAEBKVF + { 0x040A, "Logical unit not accessible, asymmetric access state transition", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x040B, "Logical unit not accessible, target port in standby state", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x040C, "Logical unit not accessible, target port in unavailable state", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x040D, "Logical unit not ready, structure check required", err_act_fail, B_ERROR }, // F + { 0x0410, "Logical unit not ready, auxiliary memory not accessible", err_act_fail, B_ERROR }, // DT WROM B + { 0x0411, "Logical unit not ready, notify (enable spinup) required", err_act_tur, B_DEV_NOT_READY }, // DT WRO AEB VF + { 0x0412, "Logical unit not ready, offline", err_act_fail, B_ERROR }, // M V + { 0x0413, "Logical unit not ready, SA creation in progress", err_act_fail, B_ERROR }, // DT R MAEBKV + { 0x0414, "Logical unit not ready, space allocation in progress", err_act_fail, B_ERROR }, // D B + { 0x0415, "Logical unit not ready, robotics disabled", err_act_fail, B_ERROR }, // M + { 0x0416, "Logical unit not ready, configuration required", err_act_fail, B_ERROR }, // M + { 0x0417, "Logical unit not ready, calibration required", err_act_fail, B_ERROR }, // M + { 0x0418, "Logical unit not ready, a door is open", err_act_fail, B_ERROR }, // M + { 0x0419, "Logical unit not ready, operating in sequential mode", err_act_fail, B_ERROR }, // M + { 0x041A, "Logical unit not ready, START STOP unit command in progress", err_act_fail, B_ERROR }, // D B + { 0x041B, "Logical unit not ready, sanitize in progress", err_act_fail, B_ERROR }, // D B + { 0x041C, "Logical unit not ready, additional power use not yet granted", err_act_fail, B_ERROR }, // DT MAEB + { 0x041D, "Logical unit not ready, configuration in progress", err_act_fail, B_ERROR }, // D + { 0x041E, "Logical unit not ready, microcode activation required", err_act_fail, B_ERROR }, // D + { 0x0500, "Logical unit does not respond to selection", err_act_fail, B_ERROR }, // DTL WROMAEBKVF + { 0x0600, "No reference position found", err_act_fail, B_ERROR }, // D WROM BK + { 0x0700, "Multiple peripheral devices selected", err_act_fail, B_ERROR }, // DTL WROM BK + { 0x0800, "Logical unit communication failure", err_act_fail, B_ERROR }, // DTL WROMAEBKVF + { 0x0801, "Logical unit communication time-out", err_act_fail, B_ERROR }, // DTL WROMAEBKVF + { 0x0802, "Logical unit communication parity error", err_act_fail, B_ERROR }, // DTL WROMAEBKVF + { 0x0803, "Logical unit communication CRC error (Ultra-DMA/32)", err_act_fail, B_ERROR }, // DT ROM BK + { 0x0804, "Unreachable copy target", err_act_fail, B_ERROR }, // DTLPWRO K + { 0x0900, "Track following error", err_act_fail, B_ERROR }, // DT WRO B + { 0x0901, "Tracking servo failure", err_act_fail, B_ERROR }, // WRO K + { 0x0902, "Focus servo failure", err_act_fail, B_ERROR }, // WRO K + { 0x0903, "Spindle servo failure", err_act_fail, B_ERROR }, // WRO + { 0x0904, "Head select fault", err_act_fail, B_ERROR }, // DT WRO B + { 0x0A00, "Error log overflow", err_act_fail, ENOSPC }, // DTLPWROMAEBKVF + { 0x0B00, "Warning", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x0B01, "Warning - specified temperature exceeded", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x0B02, "Warning - enclosure degraded", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x0B03, "Warning - background self-test failed", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x0B04, "Warning - background pre-scan detected medium error", err_act_fail, B_ERROR }, // DTLPWRO AEBKVF + { 0x0B05, "Warning - background medium scan detected medium error", err_act_fail, B_ERROR }, // DTLPWRO AEBKVF + { 0x0B06, "Warning - non-volatile cache now volatile", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x0B07, "Warning - degraded power to non-volatile cache", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x0B08, "Warning - power loss expected", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x0B09, "Warning - device statistics notification active", err_act_fail, B_ERROR }, // D + { 0x0C00, "Write error", err_act_fail, B_ERROR }, // T R + { 0x0C01, "Write error - recovered with auto reallocation", err_act_ok, B_OK }, // K + { 0x0C02, "Write error - auto reallocation failed", err_act_fail, B_ERROR }, // D W O BK + { 0x0C03, "Write error - recommend reassignment", err_act_fail, B_ERROR }, // D W O BK + { 0x0C04, "Compression check miscompare error", err_act_fail, B_ERROR }, // DT W O B + { 0x0C05, "Data expansion occurred during compression", err_act_fail, B_ERROR }, // DT W O B + { 0x0C06, "Block not compressible", err_act_fail, B_ERROR }, // DT W O B + { 0x0C07, "Write error - recovery needed", err_act_fail, B_ERROR }, // R + { 0x0C08, "Write error - recovery failed", err_act_fail, B_ERROR }, // R + { 0x0C09, "Write error - loss of streaming", err_act_fail, B_ERROR }, // R + { 0x0C0A, "Write error - padding blocks added", err_act_fail, B_ERROR }, // R + { 0x0C0B, "Auxiliary memory write error", err_act_fail, B_ERROR }, // DT WROM B + { 0x0C0C, "Write error - unexpected unsolicited data", err_act_fail, B_ERROR }, // DTLPWRO AEBKVF + { 0x0C0D, "Write error - not enough unsolicited data", err_act_fail, B_ERROR }, // DTLPWRO AEBKVF + { 0x0C0E, "Multiple write errors", err_act_fail, B_ERROR }, // DT W O BK + { 0x0C0F, "Defects in error window", err_act_fail, B_ERROR }, // R + { 0x0D00, "Error detected by third party temporary initiator", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x0D01, "Third party device failure", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x0D02, "Copy target device not reachable", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x0D03, "Incorrect copy target device type", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x0D04, "Copy target device data underrun", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x0D05, "Copy target device data overrun", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x0E00, "Invalid information unit", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x0E01, "Information unit too short", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x0E02, "Information unit too long", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x0E03, "Invalid field in command information unit", err_act_fail, B_ERROR }, // DT P R MAEBK F + { 0x1000, "ID CRC or ECC error", err_act_fail, B_ERROR }, // D W O BK + { 0x1001, "Logical block guard check failed", err_act_fail, B_ERROR }, // DT W O + { 0x1002, "Logical block application tag check failed", err_act_fail, B_ERROR }, // DT W O + { 0x1003, "Logical block reference tag check failed", err_act_fail, B_ERROR }, // DT W O + { 0x1004, "Logical block protection error on recover buffered data", err_act_fail, B_ERROR }, // T + { 0x1005, "Logical block protection method error", err_act_fail, B_ERROR }, // T + { 0x1100, "Unrecovered read error", err_act_fail, B_IO_ERROR }, // DT WRO BK + { 0x1101, "Read retries exhausted", err_act_fail, B_IO_ERROR }, // DT WRO BK + { 0x1102, "Error too long to correct", err_act_fail, B_IO_ERROR }, // DT WRO BK + { 0x1103, "Multiple read errors", err_act_fail, B_IO_ERROR }, // DT W O BK + { 0x1104, "Unrecovered read error - auto reallocate failed", err_act_fail, B_IO_ERROR }, // D W O BK + { 0x1105, "L-EC uncorrectable error", err_act_fail, B_IO_ERROR }, // WRO B + { 0x1106, "CIRC unrecovered error", err_act_fail, B_IO_ERROR }, // WRO B + { 0x1107, "Data re-synchronization error", err_act_fail, B_ERROR }, // W O B + { 0x1108, "Incomplete block read", err_act_fail, B_ERROR }, // T + { 0x1109, "No gap found", err_act_fail, B_ERROR }, // T + { 0x110A, "Miscorrected error", err_act_fail, B_ERROR }, // DT O BK + { 0x110B, "Unrecovered read error - recommend reassignment", err_act_fail, B_IO_ERROR }, // D W O BK + { 0x110C, "Unrecovered read error - recommend rewrite the data", err_act_fail, B_IO_ERROR }, // D W O BK + { 0x110D, "De-compression CRC error", err_act_fail, B_ERROR }, // DT WRO B + { 0x110E, "Cannot decompress using declared algorithm", err_act_fail, B_ERROR }, // DT WRO B + { 0x110F, "Error readingUPC/EAN number", err_act_fail, B_ERROR }, // R + { 0x1110, "Error reading ISRC number", err_act_fail, B_ERROR }, // R + { 0x1111, "Read error - loss of streaming", err_act_fail, B_ERROR }, // R + { 0x1112, "Auxiliary memory read error", err_act_fail, B_ERROR }, // DT WROM B + { 0x1113, "Read error - failed retransmission request", err_act_fail, B_ERROR }, // DTLPWRO AEBKVF + { 0x1114, "Read error - LBA marked bad by application client", err_act_fail, B_ERROR }, // D + { 0x1115, "Write after sanitize required", err_act_fail, B_ERROR }, // D + { 0x1200, "Address mark not found for ID field", err_act_fail, B_ERROR }, // D W O BK + { 0x1300, "Address mark not found for data field", err_act_fail, B_ERROR }, // D W O BK + { 0x1400, "Recorded entity not found", err_act_fail, B_ERROR }, // DTL WRO BK + { 0x1401, "Record not found", err_act_fail, B_ERROR }, // DT WRO BK + { 0x1402, "Filemark or setmark not found", err_act_fail, B_ERROR }, // T + { 0x1403, "End-of-data not found", err_act_fail, B_ERROR }, // T + { 0x1404, "Block sequence error", err_act_fail, B_ERROR }, // T + { 0x1405, "Record not found - recommend reassignment", err_act_fail, B_ERROR }, // DT W O BK + { 0x1406, "Record not found - data auto-reallocated", err_act_fail, B_ERROR }, // DT W O BK + { 0x1407, "Locate operation failure", err_act_fail, B_ERROR }, // T + { 0x1500, "Random positioning error", err_act_fail, B_ERROR }, // DTL WROM BK + { 0x1501, "Mechanical positioning error", err_act_fail, B_ERROR }, // DTL WROM BK + { 0x1502, "Positioning error detected by read of medium", err_act_fail, B_ERROR }, // DT WRO BK + { 0x1600, "Data synchronization mark error", err_act_fail, B_ERROR }, // D W O BK + { 0x1601, "Data sync error - data rewritten", err_act_fail, B_ERROR }, // D W O BK + { 0x1602, "Data sync error - recommend rewrite", err_act_fail, B_ERROR }, // D W O BK + { 0x1603, "Data sync error - data auto-reallocated", err_act_ok, B_OK }, // D W O BK + { 0x1604, "Data sync error - recommend reassignment", err_act_fail, B_ERROR }, // D W O BK + { 0x1700, "Recovered data with no error correction applied", err_act_ok, B_OK }, // DT WRO BK + { 0x1701, "Recovered data with retries", err_act_ok, B_OK }, // DT WRO BK + { 0x1702, "Recovered data with positive head offset", err_act_ok, B_OK }, // DT WRO BK + { 0x1703, "Recovered data with negative head offset", err_act_ok, B_OK }, // DT WRO BK + { 0x1704, "Recovered data with retries and/or CIRC applied", err_act_ok, B_OK }, // WRO B + { 0x1705, "Recovered data using previous sector ID", err_act_ok, B_OK }, // D WRO BK + { 0x1706, "Recovered data without ECC - data auto-reallocated", err_act_ok, B_OK }, // D W O BK + { 0x1707, "Recovered data without ECC - recommend reassignment", err_act_ok, B_OK }, // D WRO BK + { 0x1708, "Recovered data without ECC - recommend rewrite", err_act_ok, B_OK }, // D WRO BK + { 0x1709, "Recovered data without ECC - data rewritten", err_act_ok, B_OK }, // D WRO BK + { 0x1800, "Recovered data with error correction applied", err_act_ok, B_OK }, // DT WRO BK + { 0x1801, "Recovered data with error corr. & retries applied", err_act_ok, B_OK }, // D WRO BK + { 0x1802, "Recovered data - data auto-reallocated", err_act_ok, B_OK }, // D WRO BK + { 0x1803, "Recovered data with CIRC", err_act_ok, B_OK }, // R + { 0x1804, "Recovered data with l-EC", err_act_ok, B_OK }, // R + { 0x1805, "Recovered data - recommend reassignment", err_act_ok, B_OK }, // D WRO BK + { 0x1806, "Recovered data - recommend rewrite", err_act_ok, B_OK }, // D WRO BK + { 0x1807, "Recovered data with ECC - data rewritten", err_act_ok, B_OK }, // D W O BK + { 0x1808, "Recovered data with linking", err_act_fail, B_ERROR }, // R + { 0x1900, "Defect list error", err_act_fail, B_ERROR }, // D O K + { 0x1901, "Defect list not available", err_act_fail, B_ERROR }, // D O K + { 0x1902, "Defect list error in primary list", err_act_fail, B_ERROR }, // D O K + { 0x1903, "Defect list error in grown list", err_act_fail, B_ERROR }, // D O K + { 0x1A00, "Parameter list length error", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x1B00, "Synchronous data transfer error", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x1C00, "Defect list not found", err_act_fail, B_ERROR }, // D O BK + { 0x1C01, "Primary defect list not found", err_act_fail, B_ERROR }, // D O BK + { 0x1C02, "Grown defect list not found", err_act_fail, B_ERROR }, // D O BK + { 0x1D00, "Miscompare during verify operation", err_act_fail, B_ERROR }, // DT WRO BK + { 0x1D01, "Miscompare verify of unmapped LBA", err_act_fail, B_ERROR }, // D B + { 0x1E00, "Recovered ID with ECC correction", err_act_ok, B_OK }, // D W O BK + { 0x1F00, "Partial defect list transfer", err_act_fail, B_ERROR }, // D O K + { 0x2000, "Invalid command operation code", err_act_fail, B_DEV_INVALID_IOCTL }, // DTLPWROMAEBKVF + { 0x2001, "Access denied - initiator pending-enrolled", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x2002, "Access denied - no access rights", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x2003, "Access denied - invalid mgmt ID key", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x2004, "Illegal command while in write capable state", err_act_fail, B_ERROR }, // T + { 0x2005, "Obsolete", err_act_fail, B_ERROR }, // T + { 0x2006, "Illegal command while in explicit address mode", err_act_fail, B_ERROR }, // T + { 0x2007, "Illegal command while in implicit address mode", err_act_fail, B_ERROR }, // T + { 0x2008, "Access denied - enrollment conflict", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x2009, "Access denied - invalid LU identifier", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x200A, "Access denied - invalid proxy token", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x200B, "Access denied - ACL LUN conflict", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x200C, "Illegal command when not in append-only mode", err_act_fail, B_DEV_INVALID_IOCTL }, // T + { 0x2100, "Logical block address out of range", err_act_fail, B_BAD_VALUE }, // DT WRO BK + { 0x2101, "Invalid element address", err_act_fail, B_BAD_VALUE }, // DT WROM BK + { 0x2102, "Invalid address for write", err_act_fail, B_ERROR }, // R + { 0x2103, "Invalid write crossing layer jump", err_act_fail, B_ERROR }, // R + { 0x2200, "Illegal function (use 20 00, 24 00, or 26 00)", err_act_fail, B_DEV_INVALID_IOCTL }, // D + { 0x2300, "Invalid token operation, cause not reportable", err_act_fail, B_ERROR }, // DT P B + { 0x2301, "Invalid token operation, unsupported token type", err_act_fail, B_ERROR }, // DT P B + { 0x2302, "Invalid token operation, remote token usage not supported", err_act_fail, B_ERROR }, // DT P B + { 0x2303, "Invalid token operation, remote ROD token creation not supported", err_act_fail, B_ERROR }, // DT P B + { 0x2304, "Invalid token operation, token unknown", err_act_fail, B_ERROR }, // DT P B + { 0x2305, "Invalid token operation, token corrupt", err_act_fail, B_ERROR }, // DT P B + { 0x2306, "Invalid token operation, token revoked", err_act_fail, B_ERROR }, // DT P B + { 0x2307, "Invalid token operation, token expired", err_act_fail, B_ERROR }, // DT P B + { 0x2308, "Invalid token operation, token cancelled", err_act_fail, B_ERROR }, // DT P B + { 0x2309, "Invalid token operation, token deleted", err_act_fail, B_ERROR }, // DT P B + { 0x230A, "Invalid token operation, invalid token length", err_act_fail, B_ERROR }, // DT P B + { 0x2400, "Invalid field in CDB", err_act_fail, B_BAD_VALUE }, // DTLPWROMAEBKVF + { 0x2401, "CDB decryption error", err_act_fail, B_ERROR }, // DTLPWRO AEBKVF + { 0x2402, "Obsolete", err_act_fail, B_ERROR }, // T + { 0x2403, "Obsolete", err_act_fail, B_ERROR }, // T + { 0x2404, "Security audit value frozen", err_act_fail, B_ERROR }, // F + { 0x2405, "Security working key frozen", err_act_fail, B_ERROR }, // F + { 0x2406, "NONCE not unique", err_act_fail, B_ERROR }, // F + { 0x2407, "NONCE timestamp out of range", err_act_fail, B_ERROR }, // F + { 0x2408, "Invalid XCDB", err_act_fail, B_ERROR }, // DT R MAEBKV + { 0x2500, "Logical unit not supported", err_act_fail, ENXIO }, // DTLPWROMAEBKVF + { 0x2600, "Invalid field in parameter list", err_act_fail, B_BAD_VALUE }, // DTLPWROMAEBKVF + { 0x2601, "Parameter not supported", err_act_fail, B_BAD_VALUE }, // DTLPWROMAEBKVF + { 0x2602, "Parameter value invalid", err_act_fail, B_BAD_VALUE }, // DTLPWROMAEBKVF + { 0x2603, "Threshold parameters not supported", err_act_fail, B_BAD_VALUE }, // DTLPWROMAE K + { 0x2604, "Invalid release of persistent reservation", err_act_fail, B_BAD_VALUE }, // DTLPWROMAEBKVF + { 0x2605, "Data decryption error", err_act_fail, B_ERROR }, // DTLPWRO A BK + { 0x2606, "Too many target descriptors", err_act_fail, B_ERROR }, // DTLPWRO K + { 0x2607, "Unsupported target descriptor type code", err_act_fail, B_ERROR }, // DTLPWRO K + { 0x2608, "Too many segment descriptors", err_act_fail, B_ERROR }, // DTLPWRO K + { 0x2609, "Unsupported segment descriptor type code", err_act_fail, B_ERROR }, // DTLPWRO K + { 0x260A, "Unexpected inexact segment", err_act_fail, B_ERROR }, // DTLPWRO K + { 0x260B, "Inline data length exceeded", err_act_fail, B_ERROR }, // DTLPWRO K + { 0x260C, "Invalid operation for copy source or destination", err_act_fail, B_ERROR }, // DTLPWRO K + { 0x260D, "Copy segment granularity violation", err_act_fail, B_ERROR }, // DTLPWRO K + { 0x260E, "Invalid parameter while port is enabled", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x260F, "Invalid data-out buffer integrity check value", err_act_fail, B_ERROR }, // F + { 0x2610, "Data decryption key fail limit reached", err_act_fail, B_ERROR }, // T + { 0x2611, "Incomplete key-associated data set", err_act_fail, B_ERROR }, // T + { 0x2612, "Vendor specific key reference not found", err_act_fail, B_ERROR }, // T + { 0x2700, "Write protected", err_act_fail, B_READ_ONLY_DEVICE }, // DT WRO BK + { 0x2701, "Hardware write protected", err_act_fail, B_READ_ONLY_DEVICE }, // DT WRO BK + { 0x2702, "Logical unit software write protected", err_act_fail, B_READ_ONLY_DEVICE }, // DT WRO BK + { 0x2703, "Associated write protect", err_act_fail, B_READ_ONLY_DEVICE }, // T R + { 0x2704, "Persistent write protect", err_act_fail, B_READ_ONLY_DEVICE }, // T R + { 0x2705, "Permanent write protect", err_act_fail, B_READ_ONLY_DEVICE }, // T R + { 0x2706, "Conditional write protect", err_act_fail, B_READ_ONLY_DEVICE }, // R F + { 0x2707, "Space allocation failed write protect", err_act_fail, B_READ_ONLY_DEVICE }, // D B + { 0x2800, "Not ready to ready change, medium may have changed", err_act_fail, B_DEV_MEDIA_CHANGED }, // DTLPWROMAEBKVF + { 0x2801, "Import or export element accessed", err_act_fail, ENXIO }, // DT WROM B + { 0x2802, "Format-layer may have changed", err_act_fail, B_DEV_MEDIA_CHANGED }, // R + { 0x2803, "Import/export element accessed, medium changed", err_act_fail, B_ERROR }, // M + { 0x2900, "Power on, reset, or bus device reset occurred", err_act_retry, B_DEV_NOT_READY }, // DTLPWROMAEBKVF + { 0x2901, "Power on occurred", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2902, "SCSI bus reset occurred", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2903, "Bus device reset function occurred", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2904, "Device internal reset", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2905, "Transceiver mode changed to single-ended", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2906, "Transceiver mode changed to LVD", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2907, "I_T nexus loss occurred", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2A00, "Parameters changed", err_act_fail, B_ERROR }, // DTL WROMAEBKVF + { 0x2A01, "Mode parameters changed", err_act_fail, B_ERROR }, // DTL WROMAEBKVF + { 0x2A02, "Log parameters changed", err_act_fail, B_ERROR }, // DTL WROMAE K + { 0x2A03, "Reservations preempted", err_act_fail, B_ERROR }, // DTLPWROMAE K + { 0x2A04, "Reservations released", err_act_fail, B_ERROR }, // DTLPWROMAE + { 0x2A05, "Registrations preempted", err_act_fail, B_ERROR }, // DTLPWROMAE + { 0x2A06, "Asymmetric access state changed", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2A07, "Implicit asymmetric access state transition failed", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2A08, "Priority changed", err_act_fail, B_ERROR }, // DT WROMAEBKVF + { 0x2A09, "Capacity data has changed", err_act_fail, B_ERROR }, // D + { 0x2A0A, "Error history I_T nexus cleared", err_act_fail, B_ERROR }, // DT + { 0x2A0B, "Error history snapshot released", err_act_fail, B_ERROR }, // DT + { 0x2A0C, "Error recovery attributes have changed", err_act_fail, B_ERROR }, // F + { 0x2A0D, "Data encryption capabilities changed", err_act_fail, B_ERROR }, // T + { 0x2A10, "Timestamp changed", err_act_fail, B_ERROR }, // DT M E V + { 0x2A11, "Data encryption parameters changed by another I_T nexus", err_act_fail, B_ERROR }, // T + { 0x2A12, "Data encryption parameters changed by vendor specific event", err_act_fail, B_ERROR }, // T + { 0x2A13, "Data encryption key instance counter has changed", err_act_fail, B_ERROR }, // T + { 0x2A14, "SA creation capabilities data has changed", err_act_fail, B_ERROR }, // DT R MAEBKV + { 0x2A15, "Medium removal prevention preempted", err_act_fail, B_ERROR }, // T M V + { 0x2B00, "Copy cannot execute since host cannot disconnect", err_act_fail, B_ERROR }, // DTLPWRO K + { 0x2C00, "Command sequence error", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2C01, "Too many windows specified", err_act_fail, B_ERROR }, // + { 0x2C02, "Invalid combination of windows specified", err_act_fail, B_ERROR }, // + { 0x2C03, "Current program area is not empty", err_act_fail, B_ERROR }, // R + { 0x2C04, "Current program area is empty", err_act_fail, B_ERROR }, // R + { 0x2C05, "Illegal power condition request", err_act_fail, B_ERROR }, // B + { 0x2C06, "Persistent prevent conflict", err_act_fail, B_ERROR }, // R + { 0x2C07, "Previous busy status", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2C08, "Previous task set full status", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2C09, "Previous reservation conflict status", err_act_fail, B_ERROR }, // DTLPWROM EBKVF + { 0x2C0A, "Partition or collection contains user objects", err_act_fail, B_ERROR }, // F + { 0x2C0B, "Not reserved", err_act_fail, B_ERROR }, // T + { 0x2C0C, "ORWRITE generation does not match", err_act_fail, B_ERROR }, // D + { 0x2D00, "Overwrite error on update in place", err_act_fail, B_ERROR }, // T + { 0x2E00, "Insufficient time for operation", err_act_fail, B_ERROR }, // D WROM B + { 0x2E01, "Command timeout before processing", err_act_fail, B_ERROR }, // D W OM B + { 0x2E02, "Command timeout during processing", err_act_fail, B_ERROR }, // D W OM B + { 0x2E03, "Command timeout during processing due to error recovery", err_act_fail, B_ERROR }, // D W OM B + { 0x2F00, "Commands cleared by another initiator", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2F01, "Commands cleared by power loss notification", err_act_fail, B_ERROR }, // D + { 0x2F02, "Commands cleared by device server", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x2F03, "Some commands cleared by queuing layer event", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3000, "Incompatible medium installed", err_act_fail, B_ERROR }, // DT WROM BK + { 0x3001, "Cannot read medium - unknown format", err_act_fail, B_ERROR }, // DT WRO BK + { 0x3002, "Cannot read medium - incompatible format", err_act_fail, B_ERROR }, // DT WRO BK + { 0x3003, "Cleaning cartridge installed", err_act_fail, B_ERROR }, // DT R M K + { 0x3004, "Cannot write medium - unknown format", err_act_fail, B_ERROR }, // DT WRO BK + { 0x3005, "Cannot write medium - incompatible format", err_act_fail, B_ERROR }, // DT WRO BK + { 0x3006, "Cannot format medium - incompatible medium", err_act_fail, B_ERROR }, // DT WRO B + { 0x3007, "Cleaning failure", err_act_fail, B_ERROR }, // DTL WROMAEBKVF + { 0x3008, "Cannot write - application code mismatch", err_act_fail, B_ERROR }, // R + { 0x3009, "Current session not fixated for append", err_act_fail, B_ERROR }, // R + { 0x300A, "Cleaning request rejected", err_act_fail, B_ERROR }, // DT WRO AEBK + { 0x300C, "WORM medium - overwrite attempted", err_act_fail, B_ERROR }, // T + { 0x300D, "WORM medium - integrity check", err_act_fail, B_ERROR }, // T + { 0x3010, "Medium not formatted", err_act_fail, B_ERROR }, // R + { 0x3011, "Incompatible volume type", err_act_fail, B_ERROR }, // M + { 0x3012, "Incompatible volume qualifier", err_act_fail, B_ERROR }, // M + { 0x3013, "Cleaning volume expired", err_act_fail, B_ERROR }, // M + { 0x3100, "Medium format corrupted", err_act_fail, B_ERROR }, // DT WRO BK + { 0x3101, "Format command failed", err_act_fail, B_ERROR }, // D L RO B + { 0x3102, "Zoned formatting failed due to spare linking", err_act_fail, B_ERROR }, // R + { 0x3103, "SANITIZE command failed", err_act_fail, B_ERROR }, // D B + { 0x3200, "No defect spare location available", err_act_fail, B_ERROR }, // D W O BK + { 0x3201, "Defect list update failure", err_act_fail, B_ERROR }, // D W O BK + { 0x3300, "Tape length error", err_act_fail, B_ERROR }, // T + { 0x3400, "Enclosure failure", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3500, "Enclosure services failure", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3501, "Unsupported enclosure function", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3502, "Enclosure services unavailable", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3503, "Enclosure services transfer failure", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3504, "Enclosure services transfer refused", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3505, "Enclosure services checksum error", err_act_fail, B_ERROR }, // DTL WROMAEBKVF + { 0x3600, "Ribbon, ink, or toner failure", err_act_fail, B_ERROR }, // L + { 0x3700, "Rounded parameter", err_act_fail, B_ERROR }, // DTL WROMAEBKVF + { 0x3800, "Event status notification", err_act_fail, B_ERROR }, // B + { 0x3802, "ESN - power management class event", err_act_fail, B_ERROR }, // B + { 0x3804, "ESN - media class event", err_act_fail, B_ERROR }, // B + { 0x3806, "ESN - device busy class event", err_act_fail, B_ERROR }, // B + { 0x3807, "Thin provisioning soft threshold reached", err_act_fail, B_ERROR }, // D + { 0x3900, "Saving parameters not supported", err_act_fail, B_ERROR }, // DTL WROMAE K + { 0x3A00, "Medium not present", err_act_fail, B_DEV_NO_MEDIA }, // DTL WROM BK + { 0x3A01, "Medium not present - tray closed", err_act_fail, B_DEV_NO_MEDIA }, // DT WROM BK + { 0x3A02, "Medium not present - tray open", err_act_fail, B_DEV_NO_MEDIA }, // DT WROM BK + { 0x3A03, "Medium not present - loadable", err_act_fail, B_DEV_NO_MEDIA }, // DT WROM B + { 0x3A04, "Medium not present - medium auxiliary memory accessible", err_act_fail, B_DEV_NO_MEDIA }, // DT WRO B + { 0x3B00, "Sequential positioning error", err_act_fail, B_ERROR }, // TL + { 0x3B01, "Tape position error at beginning-of-medium", err_act_fail, B_ERROR }, // T + { 0x3B02, "Tape position error at end-of-medium", err_act_fail, B_ERROR }, // T + { 0x3B03, "Tape or electronic vertical forms unit not ready", err_act_fail, B_ERROR }, // L + { 0x3B04, "Slew failure", err_act_fail, B_ERROR }, // L + { 0x3B05, "Paper jam", err_act_fail, B_ERROR }, // L + { 0x3B06, "Failed to sense top-of-form", err_act_fail, B_ERROR }, // L + { 0x3B07, "Failed to sense bottom-of-form", err_act_fail, B_ERROR }, // L + { 0x3B08, "Reposition error", err_act_fail, B_ERROR }, // T + { 0x3B09, "Read past end of medium", err_act_fail, B_ERROR }, // + { 0x3B0A, "Read past beginning of medium", err_act_fail, B_ERROR }, // + { 0x3B0B, "Position past end of medium", err_act_fail, B_ERROR }, // + { 0x3B0C, "Position past beginning of medium", err_act_fail, B_ERROR }, // T + { 0x3B0D, "Medium destination element full", err_act_fail, B_DEVICE_FULL }, // DT WROM BK + { 0x3B0E, "Medium source element empty", err_act_fail, B_ERROR }, // DT WROM BK + { 0x3B0F, "End of medium reached", err_act_fail, B_ERROR }, // R + { 0x3B11, "Medium magazine not accessible", err_act_fail, B_ERROR }, // DT WROM BK + { 0x3B12, "Medium magazine removed", err_act_fail, B_ERROR }, // DT WROM BK + { 0x3B13, "Medium magazine inserted", err_act_fail, B_ERROR }, // DT WROM BK + { 0x3B14, "Medium magazine locked", err_act_fail, B_ERROR }, // DT WROM BK + { 0x3B15, "Medium magazine unlocked", err_act_fail, B_ERROR }, // DT WROM BK + { 0x3B16, "Mechanical positioning or changer error", err_act_fail, B_ERROR }, // R + { 0x3B17, "Read past end of user object", err_act_fail, B_ERROR }, // F + { 0x3B18, "Element disabled", err_act_fail, B_ERROR }, // M + { 0x3B19, "Element enabled", err_act_fail, B_ERROR }, // M + { 0x3B1A, "Data transfer device removed", err_act_fail, B_ERROR }, // M + { 0x3B1B, "Data transfer device inserted", err_act_fail, B_ERROR }, // M + { 0x3B1C, "Too many logical objects on partition to support operation", err_act_fail, B_ERROR }, // T + { 0x3D00, "Invalid bits in IDENTIFY message", err_act_fail, B_ERROR }, // DTLPWROMAE K + { 0x3E00, "Logical unit has not self-configured yet", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3E01, "Logical unit failure", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3E02, "Timeout on logical unit", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3E03, "Logical unit failed self-test", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3E04, "Logical unit unable to update self-test log", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3F00, "Target operating conditions have changed", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3F01, "Microcode has been changed", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3F02, "Changed operating definition", err_act_fail, B_ERROR }, // DTLPWROM BK + { 0x3F03, "INQUIRY data has changed", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3F04, "Component device attached", err_act_fail, B_ERROR }, // DT WROMAEBK + { 0x3F05, "Device identifier changed", err_act_fail, B_ERROR }, // DT WROMAEBK + { 0x3F06, "Redundancy group created or modified", err_act_fail, B_ERROR }, // DT WROMAEB + { 0x3F07, "Redundancy group deleted", err_act_fail, B_ERROR }, // DT WROMAEB + { 0x3F08, "Spare created or modified", err_act_fail, B_ERROR }, // DT WROMAEB + { 0x3F09, "Spare deleted", err_act_fail, B_ERROR }, // DT WROMAEB + { 0x3F0A, "Volume set created or modified", err_act_fail, B_ERROR }, // DT WROMAEBK + { 0x3F0B, "Volume set deleted", err_act_fail, B_ERROR }, // DT WROMAEBK + { 0x3F0C, "Volume set deassigned", err_act_fail, B_ERROR }, // DT WROMAEBK + { 0x3F0D, "Volume set reassigned", err_act_fail, B_ERROR }, // DT WROMAEBK + { 0x3F0E, "Reported LUNs data has changed", err_act_rescan, B_ERROR }, // DTLPWROMAE + { 0x3F0F, "Echo buffer overwritten", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x3F10, "Medium loadable", err_act_fail, B_ERROR }, // DT WROM B + { 0x3F11, "Medium auxiliary memory accessible", err_act_fail, B_ERROR }, // DT WROM B + { 0x3F12, "iSCSI IP address added", err_act_fail, B_ERROR }, // DTLPWR MAEBK F + { 0x3F13, "iSCSI IP address removed", err_act_fail, B_ERROR }, // DTLPWR MAEBK F + { 0x3F14, "iSCSI IP address changed", err_act_fail, B_ERROR }, // DTLPWR MAEBK F + { 0x3F15, "Inspect referrals sense descriptors", err_act_fail, B_ERROR }, // DTLPWR MAEBK + { 0x4000, "RAM failure", err_act_fail, B_ERROR }, // D + { 0x40ff, "Diagnostic failure on component ID ASQ", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4100, "Data path failure", err_act_fail, B_ERROR }, // D + { 0x4200, "Power-on or self-test failure", err_act_fail, B_ERROR }, // D + { 0x4300, "Message error", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4400, "Internal target failure", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4401, "Persistent reservation information lost", err_act_fail, B_ERROR }, // DT P MAEBKVF + { 0x4471, "ATA device failed set features", err_act_fail, B_ERROR }, // DT B + { 0x4500, "Select or reselect failure", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4600, "Unsuccessful soft reset", err_act_fail, B_ERROR }, // DTLPWROM BK + { 0x4700, "SCSI parity error", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4701, "Data phase CRC error detected", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4702, "SCSI parity error detected during ST data phase", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4703, "Information unit iuCRC error detected", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4704, "Asynchronous information protection error detected", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4705, "Protocol service CRC error", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4706, "PHY test function in progress", err_act_fail, B_ERROR }, // DT MAEBKVF + { 0x477F, "Some commands cleared by iSCSI protocol event", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x4800, "Initiator detected error message received", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4900, "Invalid message error", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4A00, "Command phase error", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4B00, "Data phase error", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4B01, "Invalid target port transfer tag received", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x4B02, "Too much write data", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x4B03, "ACK/NAK timeout", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x4B04, "NAK received", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x4B05, "Data offset error", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x4B06, "Initiator response timeout", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x4B07, "Connection lost", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B08, "Data-in buffer overflow - data buffer size", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B09, "Data-in buffer overflow - data buffer descriptor area", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B0A, "Data-in buffer error", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B0B, "Data-out buffer overflow - data buffer size", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B0C, "Data-out buffer overflow - data buffer descriptor area", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B0D, "Data-out buffer error", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B0E, "PCIe fabric error", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B0F, "PCIe completion timeout", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B10, "PCIe completer abort", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B11, "PCIe poisoned TLP received", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B12, "PCIe eCRC check failed", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B13, "PCIe unsupported request", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B14, "PCIe ACS violation", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4B15, "PCIe TLP prefix blocked", err_act_fail, B_ERROR }, // DT PWROMAEBK F + { 0x4C00, "Logical unit failed self-configuration", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4DFF, "Tagged overlapped commands ASQ", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x4E00, "Overlapped commands attempted", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x5000, "Write append error", err_act_fail, B_ERROR }, // T + { 0x5001, "Write append position error", err_act_fail, B_ERROR }, // T + { 0x5002, "Position error related to timing", err_act_fail, B_ERROR }, // T + { 0x5100, "Erase failure", err_act_fail, B_ERROR }, // T RO + { 0x5101, "Erase failure - incomplete erase operation detected", err_act_fail, B_ERROR }, // R + { 0x5200, "Cartridge fault", err_act_fail, B_ERROR }, // T + { 0x5300, "Media load or eject failed", err_act_fail, B_ERROR }, // DTL WROM BK + { 0x5301, "Unload tape failure", err_act_fail, B_ERROR }, // T + { 0x5302, "Medium removal prevented", err_act_fail, B_ERROR }, // DT WROM BK + { 0x5303, "Medium removal prevented by data transfer element", err_act_fail, B_ERROR }, // M + { 0x5304, "Medium thread or unthread failure", err_act_fail, B_ERROR }, // T + { 0x5305, "Volume identifier invalid", err_act_fail, B_ERROR }, // M + { 0x5306, "Volume identifier missing", err_act_fail, B_ERROR }, // M + { 0x5307, "Duplicate volume identifier", err_act_fail, B_ERROR }, // M + { 0x5308, "Element status unknown", err_act_fail, B_ERROR }, // M + { 0x5400, "SCSI to host system interface failure", err_act_fail, B_ERROR }, // P + { 0x5500, "System resource failure", err_act_fail, B_ERROR }, // P + { 0x5501, "System buffer full", err_act_fail, B_DEVICE_FULL }, // D O BK + { 0x5502, "Insufficient reservation resources", err_act_fail, B_ERROR }, // DTLPWROMAE K + { 0x5503, "Insufficient resources", err_act_fail, B_ERROR }, // DTLPWROMAE K + { 0x5504, "Insufficient registration resources", err_act_fail, B_ERROR }, // DTLPWROMAE K + { 0x5505, "Insufficient access control resources", err_act_fail, B_ERROR }, // DT PWROMAEBK + { 0x5506, "Auxiliary memory out of space", err_act_fail, B_ERROR }, // DT WROM B + { 0x5507, "Quota error", err_act_fail, B_ERROR }, // F + { 0x5508, "Maximum number of supplemental decryption keys exceeded", err_act_fail, B_ERROR }, // T + { 0x5509, "Medium auxiliary memory not accessible", err_act_fail, B_ERROR }, // M + { 0x550A, "Data currently unavailable", err_act_fail, B_ERROR }, // M + { 0x550B, "Insufficient power for operation", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x550C, "Insufficient resources to create ROD", err_act_fail, B_ERROR }, // DT P B + { 0x550D, "Insufficient resources to create ROD token", err_act_fail, B_ERROR }, // DT P B + { 0x5700, "Unable to recover table-of-contents", err_act_fail, B_ERROR }, // R + { 0x5800, "Generation does not exist", err_act_fail, B_ERROR }, // O + { 0x5900, "Updated block read", err_act_fail, B_ERROR }, // O + { 0x5A00, "Operator request or state change input", err_act_fail, B_ERROR }, // DTLPWRO BK + { 0x5A01, "Operator medium removal request", err_act_retry, B_DEV_MEDIA_CHANGE_REQUESTED }, // DT WROM BK + { 0x5A02, "Operator selected write protect", err_act_fail, B_ERROR }, // DT WRO A BK + { 0x5A03, "Operator selected write permit", err_act_fail, B_ERROR }, // DT WRO A BK + { 0x5B00, "Log exception", err_act_fail, B_ERROR }, // DTLPWROM K + { 0x5B01, "Threshold condition met", err_act_fail, B_ERROR }, // DTLPWROM K + { 0x5B02, "Log counter at maximum", err_act_fail, B_ERROR }, // DTLPWROM K + { 0x5B03, "Log list codes exhausted", err_act_fail, B_ERROR }, // DTLPWROM K + { 0x5C00, "RPL status change", err_act_fail, B_ERROR }, // D O + { 0x5C01, "Spindles synchronized", err_act_ok, B_OK }, // D O + { 0x5C02, "Spindles not synchronized", err_act_fail, B_ERROR }, // D O + { 0x5D00, "Failure prediction threshold exceeded", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x5D01, "Media failure prediction threshold exceeded", err_act_fail, B_ERROR }, // R B + { 0x5D02, "Logical unit failure prediction threshold exceeded", err_act_fail, B_ERROR }, // R + { 0x5D03, "Spare area exhaustion prediction threshold exceeded", err_act_fail, B_ERROR }, // R + { 0x5D10, "Hardware impending failure general hard drive failure", err_act_fail, B_ERROR }, // D B + { 0x5D11, "Hardware impending failure drive error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D12, "Hardware impending failure data error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D13, "Hardware impending failure seek error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D14, "Hardware impending failure too many block reassigns", err_act_fail, B_ERROR }, // D B + { 0x5D15, "Hardware impending failure access times too high", err_act_fail, B_ERROR }, // D B + { 0x5D16, "Hardware impending failure start unit times too high", err_act_fail, B_ERROR }, // D B + { 0x5D17, "Hardware impending failure channel parametrics", err_act_fail, B_ERROR }, // D B + { 0x5D18, "Hardware impending failure controller detected", err_act_fail, B_ERROR }, // D B + { 0x5D19, "Hardware impending failure throughput performance", err_act_fail, B_ERROR }, // D B + { 0x5D1A, "Hardware impending failure seek time performance", err_act_fail, B_ERROR }, // D B + { 0x5D1B, "Hardware impending failure spin-up retry count", err_act_fail, B_ERROR }, // D B + { 0x5D1C, "Hardware impending failure drive calibration retry count", err_act_fail, B_ERROR }, // D B + { 0x5D20, "Controller impending failure general hard drive failure", err_act_fail, B_ERROR }, // D B + { 0x5D21, "Controller impending failure drive error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D22, "Controller impending failure data error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D23, "Controller impending failure seek error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D24, "Controller impending failure too many block reassigns", err_act_fail, B_ERROR }, // D B + { 0x5D25, "Controller impending failure access times too high", err_act_fail, B_ERROR }, // D B + { 0x5D26, "Controller impending failure start unit times too high", err_act_fail, B_ERROR }, // D B + { 0x5D27, "Controller impending failure channel parametrics", err_act_fail, B_ERROR }, // D B + { 0x5D28, "Controller impending failure controller detected", err_act_fail, B_ERROR }, // D B + { 0x5D29, "Controller impending failure throughput performance", err_act_fail, B_ERROR }, // D B + { 0x5D2A, "Controller impending failure seek time performance", err_act_fail, B_ERROR }, // D B + { 0x5D2B, "Controller impending failure spin-up retry count", err_act_fail, B_ERROR }, // D B + { 0x5D2C, "Controller impending failure drive calibration retry count", err_act_fail, B_ERROR }, // D B + { 0x5D30, "Data channel impending failure general hard drive failure", err_act_fail, B_ERROR }, // D B + { 0x5D31, "Data channel impending failure drive error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D32, "Data channel impending failure data error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D33, "Data channel impending failure seek error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D34, "Data channel impending failure too many block reassigns", err_act_fail, B_ERROR }, // D B + { 0x5D35, "Data channel impending failure access times too high", err_act_fail, B_ERROR }, // D B + { 0x5D36, "Data channel impending failure start unit times too high", err_act_fail, B_ERROR }, // D B + { 0x5D37, "Data channel impending failure channel parametrics", err_act_fail, B_ERROR }, // D B + { 0x5D38, "Data channel impending failure controller detected", err_act_fail, B_ERROR }, // D B + { 0x5D39, "Data channel impending failure throughput performance", err_act_fail, B_ERROR }, // D B + { 0x5D3A, "Data channel impending failure seek time performance", err_act_fail, B_ERROR }, // D B + { 0x5D3B, "Data channel impending failure spin-up retry count", err_act_fail, B_ERROR }, // D B + { 0x5D3C, "Data channel impending failure drive calibration retry count", err_act_fail, B_ERROR }, // D B + { 0x5D40, "Servo impending failure general hard drive failure", err_act_fail, B_ERROR }, // D B + { 0x5D41, "Servo impending failure drive error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D42, "Servo impending failure data error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D43, "Servo impending failure seek error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D44, "Servo impending failure too many block reassigns", err_act_fail, B_ERROR }, // D B + { 0x5D45, "Servo impending failure access times too high", err_act_fail, B_ERROR }, // D B + { 0x5D46, "Servo impending failure start unit times too high", err_act_fail, B_ERROR }, // D B + { 0x5D47, "Servo impending failure channel parametrics", err_act_fail, B_ERROR }, // D B + { 0x5D48, "Servo impending failure controller detected", err_act_fail, B_ERROR }, // D B + { 0x5D49, "Servo impending failure throughput performance", err_act_fail, B_ERROR }, // D B + { 0x5D4A, "Servo impending failure seek time performance", err_act_fail, B_ERROR }, // D B + { 0x5D4B, "Servo impending failure spin-up retry count", err_act_fail, B_ERROR }, // D B + { 0x5D4C, "Servo impending failure drive calibration retry count", err_act_fail, B_ERROR }, // D B + { 0x5D50, "Spindle impending failure general hard drive failure", err_act_fail, B_ERROR }, // D B + { 0x5D51, "Spindle impending failure drive error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D52, "Spindle impending failure data error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D53, "Spindle impending failure seek error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D54, "Spindle impending failure too many block reassigns", err_act_fail, B_ERROR }, // D B + { 0x5D55, "Spindle impending failure access times too high", err_act_fail, B_ERROR }, // D B + { 0x5D56, "Spindle impending failure start unit times too high", err_act_fail, B_ERROR }, // D B + { 0x5D57, "Spindle impending failure channel parametrics", err_act_fail, B_ERROR }, // D B + { 0x5D58, "Spindle impending failure controller detected", err_act_fail, B_ERROR }, // D B + { 0x5D59, "Spindle impending failure throughput performance", err_act_fail, B_ERROR }, // D B + { 0x5D5A, "Spindle impending failure seek time performance", err_act_fail, B_ERROR }, // D B + { 0x5D5B, "Spindle impending failure spin-up retry count", err_act_fail, B_ERROR }, // D B + { 0x5D5C, "Spindle impending failure drive calibration retry count", err_act_fail, B_ERROR }, // D B + { 0x5D60, "Firmware impending failure general hard drive failure", err_act_fail, B_ERROR }, // D B + { 0x5D61, "Firmware impending failure drive error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D62, "Firmware impending failure data error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D63, "Firmware impending failure seek error rate too high", err_act_fail, B_ERROR }, // D B + { 0x5D64, "Firmware impending failure too many block reassigns", err_act_fail, B_ERROR }, // D B + { 0x5D65, "Firmware impending failure access times too high", err_act_fail, B_ERROR }, // D B + { 0x5D66, "Firmware impending failure start unit times too high", err_act_fail, B_ERROR }, // D B + { 0x5D67, "Firmware impending failure channel parametrics", err_act_fail, B_ERROR }, // D B + { 0x5D68, "Firmware impending failure controller detected", err_act_fail, B_ERROR }, // D B + { 0x5D69, "Firmware impending failure throughput performance", err_act_fail, B_ERROR }, // D B + { 0x5D6A, "Firmware impending failure seek time performance", err_act_fail, B_ERROR }, // D B + { 0x5D6B, "Firmware impending failure spin-up retry count", err_act_fail, B_ERROR }, // D B + { 0x5D6C, "Firmware impending failure drive calibration retry count", err_act_fail, B_ERROR }, // D B + { 0x5DFF, "Failure prediction threshold exceeded (false)", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x5E00, "Low power condition on", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E01, "Idle condition activated by timer", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E02, "Standby condition activated by timer", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E03, "Idle condition activated by command", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E04, "Standby condition activated by command", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E05, "Idle-B condition activated by timer", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E06, "Idle-B condition activated by command", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E07, "Idle-C condition activated by timer", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E08, "Idle-C condition activated by command", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E09, "Standby-Y condition activated by timer", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E0A, "Standby-Y condition activated by command", err_act_fail, B_ERROR }, // DTLPWRO A K + { 0x5E41, "Power state change to active", err_act_fail, B_ERROR }, // B + { 0x5E42, "Power state change to idle", err_act_fail, B_ERROR }, // B + { 0x5E43, "Power state change to standby", err_act_fail, B_ERROR }, // B + { 0x5E45, "Power state change to sleep", err_act_fail, B_ERROR }, // B + { 0x5E47, "Power state change to device control", err_act_fail, B_ERROR }, // BK + { 0x6000, "Lamp failure", err_act_fail, B_ERROR }, // + { 0x6100, "Video acquisition error", err_act_fail, B_ERROR }, // + { 0x6101, "Unable to acquire video", err_act_fail, B_ERROR }, // + { 0x6102, "Out of focus", err_act_fail, B_ERROR }, // + { 0x6200, "Scan head positioning error", err_act_fail, B_ERROR }, // + { 0x6300, "End of user area encountered on this track", err_act_fail, B_ERROR }, // R + { 0x6301, "Packet does not fit in available space", err_act_fail, B_DEVICE_FULL }, // R + { 0x6400, "Illegal mode for this track", err_act_fail, B_DEV_NOT_READY }, // R + { 0x6401, "Invalid packet size", err_act_fail, B_ERROR }, // R + { 0x6500, "Voltage fault", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x6600, "Automatic document feeder cover up", err_act_fail, B_ERROR }, // + { 0x6601, "Automatic document feeder lift up", err_act_fail, B_ERROR }, // + { 0x6602, "Document jam in automatic document feeder", err_act_fail, B_ERROR }, // + { 0x6603, "Document miss feed automatic in document feeder", err_act_fail, B_ERROR }, // + { 0x6700, "Configuration failure", err_act_fail, B_ERROR }, // A + { 0x6701, "Configuration of incapable logical units failed", err_act_fail, B_ERROR }, // A + { 0x6702, "Add logical unit failed", err_act_fail, B_ERROR }, // A + { 0x6703, "Modification of logical unit failed", err_act_fail, B_ERROR }, // A + { 0x6704, "Exchange of logical unit failed", err_act_fail, B_ERROR }, // A + { 0x6705, "Remove of logical unit failed", err_act_fail, B_ERROR }, // A + { 0x6706, "Attachment of logical unit failed", err_act_fail, B_ERROR }, // A + { 0x6707, "Creation of logical unit failed", err_act_fail, B_ERROR }, // A + { 0x6708, "Assign failure occurred", err_act_fail, B_ERROR }, // A + { 0x6709, "Multiply assigned logical unit", err_act_fail, B_ERROR }, // A + { 0x670A, "Set target port groups command failed", err_act_fail, B_ERROR }, // DTLPWROMAEBKVF + { 0x670B, "ATA device feature not enabled", err_act_fail, B_ERROR }, // DT B + { 0x6800, "Logical unit not configured", err_act_fail, B_ERROR }, // A + { 0x6801, "Subsidiary logical unit not configured", err_act_fail, B_ERROR }, // D + { 0x6900, "Data loss on logical unit", err_act_fail, B_ERROR }, // A + { 0x6901, "Multiple logical unit failures", err_act_fail, B_ERROR }, // A + { 0x6902, "Parity/data mismatch", err_act_fail, B_ERROR }, // A + { 0x6A00, "Informational, refer to log", err_act_fail, B_ERROR }, // A + { 0x6B00, "State change has occurred", err_act_fail, B_ERROR }, // A + { 0x6B01, "Redundancy level got better", err_act_fail, B_ERROR }, // A + { 0x6B02, "Redundancy level got worse", err_act_fail, B_ERROR }, // A + { 0x6C00, "Rebuild failure occurred", err_act_fail, B_ERROR }, // A + { 0x6D00, "Recalculate failure occurred", err_act_fail, B_ERROR }, // A + { 0x6E00, "Command to logical unit failed", err_act_fail, B_ERROR }, // A + { 0x6F00, "Copy protection key exchange failure - authentication failure", err_act_fail, B_ERROR }, // R + { 0x6F01, "Copy protection key exchange failure - key not present", err_act_fail, B_ERROR }, // R + { 0x6F02, "Copy protection key exchange failure - key not established", err_act_fail, B_ERROR }, // R + { 0x6F03, "Read of scrambled sector without authentication", err_act_fail, B_ERROR }, // R + { 0x6F04, "Media region code is mismatched to logical unit region", err_act_fail, B_ERROR }, // R + { 0x6F05, "Drive region must be permanent/region reset count error", err_act_fail, B_ERROR }, // R + { 0x6F06, "Insufficient block count for binding NONCE recording", err_act_fail, B_ERROR }, // R + { 0x6F07, "Conflict in binding nonce recording", err_act_fail, B_ERROR }, // R + { 0x70FF, "Decompression exception short algorithm id ASQ", err_act_fail, B_ERROR }, // T + { 0x7100, "Decompression exception long algorithm id", err_act_fail, B_ERROR }, // T + { 0x7200, "Session fixation error", err_act_fail, B_ERROR }, // R + { 0x7201, "Session fixation error writing lead-in", err_act_fail, B_ERROR }, // R + { 0x7202, "Session fixation error writing lead-out", err_act_fail, B_ERROR }, // R + { 0x7203, "Session fixation error - incomplete track in session", err_act_fail, B_ERROR }, // R + { 0x7204, "Empty or partially written reserved track", err_act_fail, B_ERROR }, // R + { 0x7205, "No more track reservations allowed", err_act_fail, B_ERROR }, // R + { 0x7206, "RMZ extension is not allowed", err_act_fail, B_ERROR }, // R + { 0x7207, "No more test zone extensions are allowed", err_act_fail, B_ERROR }, // R + { 0x7300, "CD control error", err_act_fail, B_ERROR }, // R + { 0x7301, "Power calibration area almost full", err_act_fail, B_ERROR }, // R + { 0x7302, "Power calibration area is full", err_act_fail, B_DEVICE_FULL }, // R + { 0x7303, "Power calibration area error", err_act_fail, B_ERROR }, // R + { 0x7304, "Program memory area update failure", err_act_fail, B_ERROR }, // R + { 0x7305, "Program memory area is full", err_act_fail, B_ERROR }, // R + { 0x7306, "RMA/PMA is almost full", err_act_fail, B_ERROR }, // R + { 0x7310, "Current power calibration area almost full", err_act_fail, B_ERROR }, // R + { 0x7311, "Current power calibration area is full", err_act_fail, B_ERROR }, // R + { 0x7317, "RDZ is full", err_act_fail, B_ERROR }, // R + { 0x7400, "Security error", err_act_fail, B_ERROR }, // T + { 0x7401, "Unable to decrypt data", err_act_fail, B_ERROR }, // T + { 0x7402, "Unencrypted data encountered while decrypting", err_act_fail, B_ERROR }, // T + { 0x7403, "Incorrect data encryption key", err_act_fail, B_ERROR }, // T + { 0x7404, "Cryptographic integrity validation failed", err_act_fail, B_ERROR }, // T + { 0x7405, "Error decrypting data", err_act_fail, B_ERROR }, // T + { 0x7406, "Unknown signature verification key", err_act_fail, B_ERROR }, // T + { 0x7407, "Encryption parameters not useable", err_act_fail, B_ERROR }, // T + { 0x7408, "Digital signature validation failure", err_act_fail, B_ERROR }, // DT R M E VF + { 0x7409, "Encryption mode mismatch on read", err_act_fail, B_ERROR }, // T + { 0x740A, "Encrypted block not raw read enabled", err_act_fail, B_ERROR }, // T + { 0x740B, "Incorrect encryption parameters", err_act_fail, B_ERROR }, // T + { 0x740C, "Unable to decrypt parameter list", err_act_fail, B_ERROR }, // DT R MAEBKV + { 0x740D, "Encryption algorithm disabled", err_act_fail, B_ERROR }, // T + { 0x7410, "SA creation parameter value invalid", err_act_fail, B_ERROR }, // DT R MAEBKV + { 0x7411, "SA creation parameter value rejected", err_act_fail, B_ERROR }, // DT R MAEBKV + { 0x7412, "Invalid SA usage", err_act_fail, B_ERROR }, // DT R MAEBKV + { 0x7421, "Data encryption configuration prevented", err_act_fail, B_ERROR }, // T + { 0x7430, "SA creation parameter not supported", err_act_fail, B_ERROR }, // DT R MAEBKV + { 0x7440, "Authentication failed", err_act_fail, B_ERROR }, // DT R MAEBKV + { 0x7461, "External data encryption key manager access error", err_act_fail, B_ERROR }, // V + { 0x7462, "External data encryption key manager error", err_act_fail, B_ERROR }, // V + { 0x7463, "External data encryption key not found", err_act_fail, B_ERROR }, // V + { 0x7464, "External data encryption request not authorized", err_act_fail, B_ERROR }, // V + { 0x746E, "External data encryption control timeout", err_act_fail, B_ERROR }, // T + { 0x746F, "External data encryption control error", err_act_fail, B_ERROR }, // T + { 0x7471, "Logical unit access not authorized", err_act_fail, B_ERROR }, // DT R M E V + { 0x7479, "Security conflict in translated device", err_act_fail, B_ERROR }, // D +}; + +// Use these values for loop control during searching: +#define SCSI_SENSE_KEY_TABLE_LEN (sizeof(sSCSISenseKeyTable)/sizeof(scsi_sense_key_table)) +#define SCSI_SENSE_ASC_ASCQ_TABLE_LEN (sizeof(sSCSISenseAscTable)/sizeof(scsi_sense_asc_table)) + + +status_t +scsi_get_sense_key_info(uint8 key, const char **label, err_act *action, status_t *error) +{ + int i; + for (i = 0; i < (int)SCSI_SENSE_KEY_TABLE_LEN; i++) { + if (sSCSISenseKeyTable[i].key == key) { + *label = sSCSISenseKeyTable[i].label; + *action = sSCSISenseKeyTable[i].action; + *error = sSCSISenseKeyTable[i].err; + return B_OK; + } + } + *label = NULL; + return B_BAD_VALUE; +} + + +status_t +scsi_get_sense_asc_info(uint16 asc_asq, const char **label, err_act *action, status_t *error) +{ + int i; + for (i = 0; i < (int)SCSI_SENSE_ASC_ASCQ_TABLE_LEN; i++) { + if (sSCSISenseAscTable[i].asc_ascq == asc_asq) { + *label = sSCSISenseAscTable[i].label; + *action = sSCSISenseAscTable[i].action; + *error = sSCSISenseAscTable[i].err; + return B_OK; + } + } + *label = NULL; + return B_BAD_VALUE; +} + + + + + + diff --git a/src/add-ons/kernel/drivers/disk/usb/usb_disk/Jamfile b/src/add-ons/kernel/drivers/disk/usb/usb_disk/Jamfile index 862e367..995055a 100644 --- a/src/add-ons/kernel/drivers/disk/usb/usb_disk/Jamfile +++ b/src/add-ons/kernel/drivers/disk/usb/usb_disk/Jamfile @@ -1,7 +1,7 @@ SubDir HAIKU_TOP src add-ons kernel drivers disk usb usb_disk ; SubDirSysHdrs $(HAIKU_TOP) src add-ons kernel bus_managers usb ; -UsePrivateHeaders kernel ; +UsePrivateHeaders drivers kernel ; KernelAddon usb_disk : usb_disk.cpp diff --git a/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp b/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp index ff03f98..6c874f3 100644 --- a/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp +++ b/src/add-ons/kernel/drivers/disk/usb/usb_disk/usb_disk.cpp @@ -18,6 +18,7 @@ #include <fs/devfs.h> +#include "scsi_sense.h" #include "usb_disk_scsi.h" @@ -136,11 +137,11 @@ status_t usb_disk_receive_csw(disk_device *device, status_t usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength, uint32 logicalBlockAddress, uint16 transferLength, void *data, size_t *dataLength, - bool directionIn); + bool directionIn, err_act *action = NULL); -status_t usb_disk_request_sense(device_lun *lun); +status_t usb_disk_request_sense(device_lun *lun, err_act *action); status_t usb_disk_mode_sense(device_lun *lun); -status_t usb_disk_test_unit_ready(device_lun *lun); +status_t usb_disk_test_unit_ready(device_lun *lun, err_act *action = NULL); status_t usb_disk_inquiry(device_lun *lun); status_t usb_disk_reset_capacity(device_lun *lun); status_t usb_disk_update_capacity(device_lun *lun); @@ -265,7 +266,7 @@ usb_disk_receive_csw(disk_device *device, command_status_wrapper *status) status_t usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength, uint32 logicalBlockAddress, uint16 transferLength, void *data, - size_t *dataLength, bool directionIn) + size_t *dataLength, bool directionIn, err_act *_action) { TRACE("operation: lun: %u; op: %u; oplen: %u; lba: %" B_PRIu32 "; tlen: %u; data: %p; dlen: %p (%lu); in: %c\n", @@ -407,7 +408,7 @@ usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength, " failed at the SCSI level\n", operation); } - result = usb_disk_request_sense(lun); + result = usb_disk_request_sense(lun, _action); return result == B_OK ? B_ERROR : result; } } @@ -437,7 +438,7 @@ usb_disk_operation(device_lun *lun, uint8 operation, uint8 opLength, status_t -usb_disk_request_sense(device_lun *lun) +usb_disk_request_sense(device_lun *lun, err_act *_action) { size_t dataLength = sizeof(scsi_request_sense_6_parameter); scsi_request_sense_6_parameter parameter; @@ -449,56 +450,42 @@ usb_disk_request_sense(device_lun *lun) return result; } + const char *label = NULL; + err_act action = err_act_fail; + status_t status = B_ERROR; + scsi_get_sense_asc_info((parameter.additional_sense_code << 8) + | parameter.additional_sense_code_qualifier, &label, &action, + &status); + if (parameter.sense_key > SCSI_SENSE_KEY_NOT_READY && parameter.sense_key != SCSI_SENSE_KEY_UNIT_ATTENTION) { TRACE_ALWAYS("request_sense: key: 0x%02x; asc: 0x%02x; ascq: " - "0x%02x;\n", parameter.sense_key, parameter.additional_sense_code, - parameter.additional_sense_code_qualifier); + "0x%02x; %s\n", parameter.sense_key, parameter.additional_sense_code, + parameter.additional_sense_code_qualifier, + label ? label : "(unknown)"); } - switch (parameter.sense_key) { - case SCSI_SENSE_KEY_NO_SENSE: - case SCSI_SENSE_KEY_RECOVERED_ERROR: - return B_OK; - - case SCSI_SENSE_KEY_HARDWARE_ERROR: - case SCSI_SENSE_KEY_MEDIUM_ERROR: - TRACE_ALWAYS("request_sense: media or hardware error\n"); - return B_DEV_UNREADABLE; - - case SCSI_SENSE_KEY_ILLEGAL_REQUEST: - TRACE_ALWAYS("request_sense: illegal request\n"); - return B_DEV_INVALID_IOCTL; - - case SCSI_SENSE_KEY_UNIT_ATTENTION: - if (parameter.additional_sense_code - != SCSI_ASC_MEDIUM_NOT_PRESENT) { - TRACE_ALWAYS("request_sense: media changed\n"); - lun->media_changed = true; - lun->media_present = true; + if ((parameter.additional_sense_code == 0 + && parameter.additional_sense_code_qualifier == 0) + || label == NULL) { + scsi_get_sense_key_info(parameter.sense_key, &label, &action, &status); + } - return B_DEV_MEDIA_CHANGED; - } - // fall through - - case SCSI_SENSE_KEY_NOT_READY: - TRACE("request_sense: device not ready (asc 0x%02x ascq 0x%02x)\n", - parameter.additional_sense_code, - parameter.additional_sense_code_qualifier); - lun->media_present = false; - usb_disk_reset_capacity(lun); - return B_DEV_NOT_READY; - - case SCSI_SENSE_KEY_DATA_PROTECT: - TRACE_ALWAYS("request_sense: write protected\n"); - return B_READ_ONLY_DEVICE; - - case SCSI_SENSE_KEY_ABORTED_COMMAND: - TRACE_ALWAYS("request_sense: command aborted\n"); - return B_CANCELED; + if (status == B_DEV_MEDIA_CHANGED) { + lun->media_changed = true; + lun->media_present = true; + } else if (parameter.sense_key == SCSI_SENSE_KEY_UNIT_ATTENTION + && status != B_DEV_NO_MEDIA) { + lun->media_present = true; + } else if (status == B_DEV_NOT_READY) { + lun->media_present = false; + usb_disk_reset_capacity(lun); } + + if (_action != NULL) + *_action = action; - return B_ERROR; + return status; } @@ -524,7 +511,7 @@ usb_disk_mode_sense(device_lun *lun) status_t -usb_disk_test_unit_ready(device_lun *lun) +usb_disk_test_unit_ready(device_lun *lun, err_act *_action) { // if unsupported we assume the unit is fixed and therefore always ok if (!lun->device->tur_supported) @@ -533,10 +520,10 @@ usb_disk_test_unit_ready(device_lun *lun) status_t result; if (lun->device->is_atapi) { result = usb_disk_operation(lun, SCSI_START_STOP_UNIT_6, 6, 0, 1, - NULL, NULL, false); + NULL, NULL, false, _action); } else { result = usb_disk_operation(lun, SCSI_TEST_UNIT_READY_6, 6, 0, 0, - NULL, NULL, true); + NULL, NULL, true, _action); } if (result == B_DEV_INVALID_IOCTL) { @@ -554,11 +541,14 @@ usb_disk_inquiry(device_lun *lun) size_t dataLength = sizeof(scsi_inquiry_6_parameter); scsi_inquiry_6_parameter parameter; status_t result = B_ERROR; + err_act action = err_act_ok; for (uint32 tries = 0; tries < 3; tries++) { result = usb_disk_operation(lun, SCSI_INQUIRY_6, 6, 0, dataLength, - ¶meter, &dataLength, true); - if (result == B_OK) + ¶meter, &dataLength, true, &action); + if (result == B_OK || (action != err_act_retry + && action != err_act_many_retries)) { break; + } } if (result != B_OK) { TRACE_ALWAYS("getting inquiry data failed: %s\n", strerror(result)); @@ -612,6 +602,7 @@ usb_disk_update_capacity(device_lun *lun) size_t dataLength = sizeof(scsi_read_capacity_10_parameter); scsi_read_capacity_10_parameter parameter; status_t result = B_ERROR; + err_act action = err_act_ok; // Retry reading the capacity up to three times. The first try might only // yield a unit attention telling us that the device or media status @@ -620,9 +611,11 @@ usb_disk_update_capacity(device_lun *lun) // reads. for (int32 i = 0; i < 3; i++) { result = usb_disk_operation(lun, SCSI_READ_CAPACITY_10, 10, 0, 0, - ¶meter, &dataLength, true); - if (result == B_OK) + ¶meter, &dataLength, true, &action); + if (result == B_OK || (action != err_act_retry + && action != err_act_many_retries)) { break; + } } if (result != B_OK) { @@ -801,10 +794,11 @@ usb_disk_device_added(usb_device newDevice, void **cookie) // initialize this lun result = usb_disk_inquiry(lun); + err_act action = err_act_ok; for (uint32 tries = 0; tries < 8; tries++) { TRACE("usb lun %"B_PRIu8" inquiry attempt %"B_PRIu32" begin\n", i, tries); - status_t ready = usb_disk_test_unit_ready(lun); + status_t ready = usb_disk_test_unit_ready(lun, &action); if (ready == B_OK || ready == B_DEV_NO_MEDIA) { if (lun->device_type == B_CD) lun->write_protected = true; @@ -821,7 +815,8 @@ usb_disk_device_added(usb_device newDevice, void **cookie) } TRACE("usb lun %"B_PRIu8" inquiry attempt %"B_PRIu32" failed\n", i, tries); - + if (action != err_act_retry && action != err_act_many_retries) + break; bigtime_t snoozeTime = 1000000 * tries; TRACE("snoozing %"B_PRIu64" microseconds for usb lun\n", snoozeTime); @@ -1095,7 +1090,17 @@ usb_disk_ioctl(void *cookie, uint32 op, void *buffer, size_t length) switch (op) { case B_GET_MEDIA_STATUS: { - *(status_t *)buffer = usb_disk_test_unit_ready(lun); + err_act action = err_act_ok; + for (uint32 tries = 0; tries < 3; tries++) { + status_t ready = usb_disk_test_unit_ready(lun, &action); + if (ready == B_OK || ready == B_DEV_NO_MEDIA + || (action != err_act_retry + && action != err_act_many_retries)) { + *(status_t *)buffer = ready; + break; + } + snooze(500000); + } TRACE("B_GET_MEDIA_STATUS: 0x%08" B_PRIx32 "\n", *(status_t *)buffer); result = B_OK;