## Storage Device Driver Reference

[prev][next][parent][TOC]

### Summary of Error Codes

This section describes all the adapter device driver error codes. Upon abnormal termination of a direct call command, the adapter device driver sets the IORB_ERROR flag in the IORBH Status field, and sets the ErrorCode field in the IORBH with one of the error codes listed below. The error codes are grouped by error category. Where stated below, the adapter device driver is required to retry the function prior to returning the error code to the caller.

IOERR_CMD

This error category maps errors related to the IORB command an adapter device driver receives.

IOERR_CMD_NOT_SUPPORTED
This error indicates that the adapter device driver has not implemented the requested function, including commands that the adapter device driver does not understand.

IOERR_CMD_SYNTAX
This error indicates that the ADD has detected an inconsistency in the IORB that prevents successful execution of the requested function.

IOERR_CMD_SGLIST_BAD
This error indicates that the adapter device driver cannot accept the scatter/gather list passed, due to either a defect in the scatter/gather list (0-length segment) or an underlying hardware limitation.

IOERR_CMD_SW_RESOURCE (retry required)
This error indicates that the adapter device driver could not perform the requested function due to the lack of a software resource (for example, buffer, selector, and so forth).

Note: The adapter device driver should attempt to recover from this condition (using a smaller buffer, for example) even if degraded performance results.

IOERR_CMD_ABORTED
This error is returned when an IOCM_ABORT is received for a device that is currently processing a command. This error code should be set regardless of SCSI sense data that indicates a successful command completion.

IOERR_CMD_ADD_SOFTWARE_FAILURE
This error indicates that the adapter device driver has detected an internal consistency check that prevents it from executing the requested IORB.

IOERR_CMD_OS_SOFTWARE_FAILURE
This error indicates that the adapter device driver received an unexpected error return code from an operating system service. The adapter device driver might retry the operation, depending on the nature of the error.

IOERR_UNIT

This error category maps errors related to the condition of an addressed unit.

IOERR_UNIT_NOT_ALLOCATED
This error indicates that the unit has received an IORB command prior to being allocated. This error should be returned to all commands directed to a unit prior to its receiving an IOCM_ALLOCATE_UNIT command.

IOERR_UNIT_ALLOCATED
This error indicates that an attempt was made to allocate a unit that had been allocated previously. Normally, this error would be returned in response to IOCM_ALLOCATE_UNIT.

IOERR_UNIT_NOT_READY
This error indicates that a unit is unable to perform an otherwise valid operation, usually due to an unusual condition on a unit, such as incorrect spindle speed.

Note: The adapter device driver should not return this error as the result of normal start-up delays on devices.

IOERR_UNIT_PWR_OFF
As an option, the adapter device driver can return this error if it has access to backup configuration data (CMOS) indicating that a previously configured device is not available. If backup configuration data is not available, a powered-off unit normally would not appear in the Adapter Device Driver DEVICETABLE; thus, this error condition would not be possible .

IOERR_RBA

This error category pertains to problems accessing a relative block address (RBA) on a particular unit.

IOERR_RBA_ADDRESSING_ERROR (retry required)
This error indicates that the requested RBA could not be located. This could be due to a failure to find the appropriate address marks on a particular device.

IOERR_RBA_LIMIT
This error indicates that the specified RBA exceeded the allowable maximum for the media currently in the device.

IOERR_RBA_CRC_ERROR (retry required)
This error indicates that the RBA was found; however, the data requested could not be read successfully.

IOERR_MEDIA

This error category pertains to problems relating to the media in a drive.

IOERR_MEDIA_NOT_FORMATTED
This error indicates that the requested operation could not be performed since the media in the drive requires low-level formatting. This includes requests to determine media capacity (IOCM_GET_MEDIA_GEOMETRY), if such requests require formatted media.

IOERR_MEDIA_NOT_SUPPORTED
This error indicates that the drive detected media that it cannot support. If the adapter device driver or device cannot make this determination directly, an I/O error can be returned in lieu of this error.

IOERR_MEDIA_WRITE_PROTECT
This error indicates that either the media or the drive is Write protected or that the media is not writable.

IOERR_MEDIA_CHANGED
This error indicates that the media in the drive might have been changed ( for example, removal and/or insertion of the media has been detected since the last operation on the device).

IOERR_MEDIA_NOT_PRESENT
This error indicates that the requested operation, requiring media in the drive, failed because media was not in the drive.

IOERR_ADAPTER

This error category pertains to errors that are related to or detected by the host adapter.

IOERR_ADAPTER_HOSTBUSCHECK
This error pertains to problems caused by the adapter's inability to communicate with the host CPU. These errors can include incorrect parity on data received from the host. Frequently these errors are of a severe enough nature to cause shutdown of the host system. In such cases, normal host bus management procedures take precedence over the reporting of this error.

IOERR_ADAPTER_DEVICEBUSCHECK (retry required)
This error pertains to problems caused by the adapter's inability to communicate with an attached device. These errors include incorrect parity on data received from the attached device or incorrect bus protocols. These errors are recoverable and should be retried.

IOERR_ADAPTER_OVERRUN (retry required)
This error indicates either that the host adapter has lost data from a device due to its buffers being filled faster than they can be emptied by the host CPU or that a device attempted to supply more data than was expected by the host adapter.

IOERR_ADAPTER_UNDERRUN (retry required)
This error indicates either that the host adapter was unable to supply data on demand to a device, which caused device operation to fail, or that a device was expecting more data than the adapter was programmed to supply.

IOERR_ADAPTER_DIAGFAIL
This error indicates that the host adapter detected an internal consistency check, preventing its continued operation. Based on the severity of the error, the adapter device driver may or may not retry the requested operation.

IOERR_ADAPTER_TIMEOUT (retry required)
This error indicates that the adapter device driver timeout for an adapter to respond has been exceeded. Normally, the device initiates a retry sequence if this error occurs.

IOERR_ADAPTER_DEVICE_TIMEOUT (retry required)
This error indicates the failure of a device to respond to the host adapter .

IOERR_ADAPTER_REQ_NOT_SUPPORTED
This error indicates that the requested operation or function is not supported by this adapter.

IOERR_ADAPTER_REFER_TO_STATUS
This error indicates that the reported error could not be classified. Additional information can be provided in the IORB StatusBlock field if requested by the device manager. The ADD should retry the operation unless the IORB_DISABLE_RETRY bit is set.

IOERR_ADAPTER_NONSPECIFIC (retry required)
This error should be reported when an ADD cannot classify an adapter- related error condition and an IORB StatusBlock value is not provided. If an IORB StatusBlock value is provided, IOERR_ADAPTER_REFER_TO_STATUS should be returned.

IOERR_DEVICE

This error category pertains to errors detected by and relating to devices connected to a host adapter.

IOERR_DEVICE_DEVICEBUSCHECK (retry required)
This error pertains to a problem in communications between a host adapter and a device that was detected by the device. This would include incorrect parity on data received by the host adapter or a breakdown in bus protocols between the device and the host adapter.

IOERR_DEVICE_REQ_NOT_SUPPORTED
This error indicates that the requested operation or function is not supported by this device.

IOERR_DEVICE_DIAGFAIL
This error indicates that the device detected an internal consistency check that prevents its correct operation. Depending on the severity of the problem, the ADD might or might not retry the operation.

IOERR_DEVICE_BUSY (retry required)
This error indicates that the device is busy and cannot accept the requested operation. This error includes, but is not limited to, SCSI Contingent Allegiance conditions.

IOERR_DEVICE_OVERRUN (retry required)
This error indicates either that the device has lost data due to its buffers being filled faster than they can be emptied by the host adapter or that the device attempted to supply more data than the host adapter could accept.

IOERR_DEVICE_UNDERRUN (retry required)
This error indicates either that the device was unable to obtain data on demand, which caused device operation to fail, or that device operation required more data than was supplied by the host adapter.

IOERR_DEVICE_RESET (retry required)
This error indicates that an unexpected device reset occurred that caused device operation to fail. The ADD should retry the failed operation and report this condition as a recovered error.

IOERR_DEVICE_NONSPECIFIC (retry required)
This error should be returned when the ADD cannot classify a device-related error and an IORB StatusBlock value was not supplied. If an IORB StatusBlock value is supplied, IOERR_ADAPTER_REFER_TO_STATUS should be returned.