SCSI Status Code

A SCSI Status Code is used to determine the success or failure of a SCSI command. At the end of any command, the target returns a Status Code byte which should be one of the following:

00h Good
This status code indicates that the device has completed the task successfully.

02h Check Condition
When the target returns a Check Condition in response to a command it is indicating that it has entered a contingent allegiance condition. This means that an error occurred when it attempted to execute a SCSI command. The initiator usually then issues a SCSI Request Sense command in order to obtain a Key Code Qualifier (KCQ) from the target.

04h Condition Met
This status code is returned on successful completion of a Pre-fetch Command.

08h Busy
The target returns Busy if it cannot complete a command at that time, for example if it is in the contingent allegiance condition.

10h Intermediate (obsolete)
The target returns Intermediate when it successfully completes a linked command (except the last command). This status code is obsolete starting with SAM-4.

14h Intermediate - Condition Met (obsolete)
As the name suggests, this status code is simply a combination of 10h Intermediate and 04h Condition Met. This status code is obsolete starting with SAM-4.

18h Reservation Conflict
The target returns this status code if an initiator attempts to access a LUN that has been previously reserved by another initiator using the Reserve or Reserve Unit command.

22h Command Terminated (obsolete)
The target returns this status if the target has to terminate the current I/O process because it received a Terminate I/O Process message. This status code is obsolete starting with SAM-2.

28h Task Set Full
Similar to 08h Busy status, this status code is returned when the logical unit lacks the resources to accept a received task from an I_T nexus. This status code implies that the logical unit already has at least one task from that I_T nexus, where the 08h Busy status code implies that the logical unit currently has no tasks from that I_T nexus.

30h ACA Active
The target returns this status code if an auto-contingent allegiance condition has occurred.

40h Task Aborted
The target returns this status code when a task is aborted by another I_T nexus and the TAS bit in the Control mode page is set to one.