udi_scsi_status_t(3udi)
Status structure in SCSI I/O Acknowledgement
#include <udi.h>typedef struct { udi_status_t req_status; udi_ubit8_t scsi_status; udi_ubit8_t sense_status; } udi_scsi_status_t;MEMBERS req_status is the main software status associated with this I/O request. See below for definitions of status values.
scsi_status is the status byte received over the SCSI bus as defined in the SCSI protocol.
sense_status is the status byte for the REQUEST SENSE command on the SCSI bus. This is valid only when scsi_status indicates a CHECK CONDITION.
DESCRIPTION The SCSI status structure gives the status of the I/O request on I/O completion.
STATUS VALUES The following status codes are defined for req_status:
UDI_SCSI_STAT_ACA_PENDING - A contingent-allegiance condition remains pending at the SCSI device.
UDI_SCSI_STAT_SELECTION_TIMEOUT - SCSI device did not respond to selection.
UDI_SCSI_STAT_DEVICE_PHASE_ERROR - Adapter detected an illegal SCSI bus phase change on the part of the device.
UDI_SCSI_STAT_UNEXPECTED_BUS_FREE - Either the adapter or the device terminated the command prematurely by putting the SCSI bus in a free state.
UDI_SCSI_STAT_DEVICE_PARITY_ERROR - Adapter detected a parity error on the part of the device. (Device-detected parity errors are reported through sense data.)
UDI_SCSI_STAT_ABORTED_HD_BUS_RESET - The I/O command was aborted by a SCSI bus reset generated internally by the HD, probably to resolve a SCSI bus hang. This I/O command may or may not have actually been started on the device. It is unknown if this particular command caused a bus hang.
UDI_SCSI_STAT_ABORTED_RMT_BUS_RESET - The I/O command was aborted by a SCSI bus reset generated by a device on the SCSI bus other than the adapter that this HD controls. This I/O command may or may not have actually been started on the device.
UDI_SCSI_STAT_ABORTED_REQ_BUS_RESET - The I/O command was aborted by a SCSI bus reset requested by the PD. This I/O command may or may not have actually been started on the device.
UDI_SCSI_STAT_ABORTED_REQ_TGT_RESET - The I/O command was aborted by a SCSI target reset requested by the PD. This I/O command may or may not have actually been started on the device.
UDI_SCSI_STAT_HD_ABORTED -- I/O aborted by the HD for reasons other than a reset, timeout, or PD-requested abort; e.g., for a sympathetic error which clears the device queue.
UDI_SCSI_STAT_LINK_FAILURE - The link between the adapter and the device has failed. It is unknown whether this command was active at the time of hardware failure.
UDI_SCSI_STAT_NONZERO_STATUS_BYTE - Device request returned a non-zero SCSI status byte and no other status value applies. If another status code is applicable the HD must set req_status to the other applicable value. The PD must check scsi_status regardless of the value of req_status.
UDI_STAT_NOT_UNDERSTOOD - Request received from the PD was invalid.
UDI_STAT_TIMEOUT - This command was timed out by the HD and aborted.
UDI_STAT_ABORTED - I/O command was successfully aborted as a result of an explicit abort request from the PD (a SCSI control abort request, or a call to udi_channel_op_abort). The command may or may not have been actually started at the device.
UDI_STAT_DATA_OVERRUN - This target device attempted to send more data than was requested.
UDI_STAT_DATA_UNDERRUN - This target device sent less data than was requested.
UDI_STAT_HW_PROBLEM - This command terminated with an indeterminate hardware error.
UDI_STAT_TERMINATED - The HD instance was abruptly terminated and this command was automatically completed by the environment. Drivers must never generate this status code directly.
Note that UDI_STAT_NOT_UNDERSTOOD, UDI_STAT_TIMEOUT, UDI_STAT_ABORTED, UDI_STAT_DATA_OVERRUN, UDI_STAT_DATA_UNDERRUN, UDI_STAT_HW_PROBLEM, and UDI_STAT_TERMINATED are common status codes whose constant values are defined in Chapter 9, "Fundamental Types", of the UDI Core Specification.