When a request is issued, the CD-ROM Device Manager will set the IORB_REQ_STATUSBLOCK bit in the RequestControl field of the IORB header. If this bit is set and an error occurs, the Adapter Device Driver must return a valid status block and a valid sense data block back to the Device Manager when the request completes.
The status block is pointed to by the pStatusBlock field in the IORB header. It should be noted that pStatusBlock is a 16 bit near pointer, so the block is within the same segment as the IORB. The sense data is pointed to by the SenseData field in the status block. This field is a 16:16 far pointer. The length of the sense data to return is in specified in the ReqSenseLen field.
The adapter device driver must set the following fields when returning sense data:
To maintain consistency with the adapter device driver specification, an IORB error code must also be returned in the IORB header when an error occurs. This is in addition to the returned sense data information. The table below shows the mapping between Sense Data error codes and IORB error codes. If the Adapter Device Driver returns Sense Key and Sense Codes listed in the SCSI-2 specification which are not listed in the table below, the adapter device driver must map the sense key and codes to the most appropriate IORB error code.
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
Key = Sense Key ASC = Additional Sense Code ASCQ = Additional Sense Code Qualifier
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
ÚÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ ³ ³Description ³IORB Error Code ³ ³ ³Key ASC ³ ³ ³ ³ ³ASCQ ³ ³ ³ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ³ ³ ³ ³NOT READY ³02h 04h 00h³Logical Unit Not Ready ³IOERR_UNIT_NOT_READY ³ ³ ³02h 04h 01h³Becoming ready ³IOERR_UNIT_NOT_READY ³ ³ ³02h 57h 00h³Unable to recover TOC ³IOERR_UNIT_NOT_READY ³ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ³ ³ ³ ³MEDIUM ³03h 02h 00h³No Seek Complete ³IOERR_RBA_ADDRESSING_ERROR ³ ³ERROR ³03h 11h 00h³Unrecovered Read Error ³IOERR_RBA_CRC_ERROR ³ ³ ³03h 11h 05h³L-EC Uncorrectable Error ³IOERR_RBA_CRC_ERROR ³ ³ ³03h 11h 06h³CIRC Unrecovered Error ³IOERR_RBA_CRC_ERROR ³ ³ ³03h 12h 00h³Address Mark Not Found ³IOERR_RBA_ADDRESSING_ERROR ³ ³ ³03h 15h 00h³Random Positioning Error ³IOERR_RBA_ADDRESSING_ERROR ³ ³ ³03h 16h 00h³Data Synchronization Error³IOERR_RBA_CRC_ERROR ³ ³ ³03h 30h 00h³Incompatible Medium ³IOERR_MEDIA_NOT_SUPPORTED ³ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ³ ³ ³ ³HARDWARE ³04h 08h 00h³Unit Communication Fail ³IOERR_DEVICE_NONSPECIFIC ³ ³ERROR ³04h 09h 01h³Tracking Servo Failure ³IOERR_DEVICE_NONSPECIFIC ³ ³ ³04h 09h 02h³Focus Servo Failure ³IOERR_DEVICE_NONSPECIFIC ³ ³ ³04h 09h 03h³Spindle Servo Failure ³IOERR_DEVICE_NONSPECIFIC ³ ³ ³04h 44h 00h³Internal Target Failure ³IOERR_DEVICE_NONSPECIFIC ³ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ³ ³ ³ ³ILLEGAL ³05h 20h 00h³Invalid Command Code ³IOERR_DEVICE_REQ_NOT_SUPPORTED³ ³REQUEST ³05h 21h 00h³LBA Out of Range ³IOERR_RBA_ADDRESSING_ERROR ³ ³ ³05h 24h 00h³Invalid field in CDB ³IOERR_CMD_SYNTAX ³ ³ ³05h 25h 00h³Unit not supported ³IOERR_CMD_SYNTAX ³ ³ ³05h 26h 00h³Invalid field in parmlist ³IOERR_CMD_SYNTAX ³ ³ ³05h 63h 00h³End of user area ³IOERR_RBA_ADDRESSING_ERROR ³ ³ ³05h 64h 00h³Illegal mode for track ³IOERR_RBA_ADDRESSING_ERROR ³ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³ ³Medium may have changed ³ ³ ³UNIT ³06h 28h 00h³Power on reset ³IOERR_MEDIA_CHANGED ³ ³ATTENTION ³06h 29h 00h³ ³IOERR_DEVICE_RESET ³ ÃÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´ ³ ³08h 64h 00h³Illegal mode for track ³IOERR_RBA_ADDRESSING_ERROR ³ ³BLANK ³ ³ ³ ³ ³CHECK ³ ³ ³ ³ ÀÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ