When executing an I/O request many things may go wrong. The reason of error can be reported in the CCB status with great detail. Examples of use are spread throughout this document. For completeness here is the summary of recommended responses for the typical error conditions:
CAM_RESRC_UNAVAIL - some resource is temporarily unavailable and the SIM driver cannot generate an event when it will become available. An example of this resource would be some intra-controller hardware resource for which the controller does not generate an interrupt when it becomes available.
CAM_UNCOR_PARITY - unrecovered parity error occurred
CAM_DATA_RUN_ERR - data overrun or unexpected data phase (going in other direction than specified in CAM_DIR_MASK) or odd transfer length for wide transfer
CAM_SEL_TIMEOUT - selection timeout occurred (target does not respond)
CAM_CMD_TIMEOUT - command timeout occurred (the timeout function ran)
CAM_SCSI_STATUS_ERROR - the device returned error
CAM_AUTOSENSE_FAIL - the device returned error and the REQUEST SENSE COMMAND failed
CAM_MSG_REJECT_REC - MESSAGE REJECT message was received
CAM_SCSI_BUS_RESET - received SCSI bus reset
CAM_REQ_CMP_ERR - “impossible” SCSI phase occurred or something else as weird or just a generic error if further detail is not available
CAM_UNEXP_BUSFREE - unexpected disconnect occurred
CAM_BDR_SENT - BUS DEVICE RESET message was sent to the target
CAM_UNREC_HBA_ERROR - unrecoverable Host Bus Adapter Error
CAM_REQ_TOO_BIG - the request was too large for this controller
CAM_REQUEUE_REQ - this request should be re-queued to preserve transaction ordering. This typically occurs when the SIM recognizes an error that should freeze the queue and must place other queued requests for the target at the sim level back into the XPT queue. Typical cases of such errors are selection timeouts, command timeouts and other like conditions. In such cases the troublesome command returns the status indicating the error, the and the other commands which have not be sent to the bus yet get re-queued.
CAM_LUN_INVALID - the LUN ID in the request is not supported by the SCSI controller
CAM_TID_INVALID - the target ID in the request is not supported by the SCSI controller