User Manual

SCSI Commands Reference Manual, Rev. J 58
www.seagate.com General Concepts
2.4.1.4 Deferred errors
Response codes 71h and 73h (deferred error) indicate that the sense data returned is the result of an error or exception condition
that occurred during processing of a previous command for which GOOD, CONDITION MET, INTERMEDIATE, and
INTERMEDIATE-CONDITION MET status has already been returned. Such commands are associated with the use of the
immediate bit and with some forms of caching. Device servers that implement these features shall implement deferred error
reporting.
The deferred error may be indicated by returning CHECK CONDITION status to an application client accessed through a defined
I_T nexus as described in this subclause.
If the task terminates with CHECK CONDITION status and the sense data describes a deferred error, the command for the
terminated task shall not have been processed. After the device server detects a deferred error condition, it shall return a
deferred error according to the following rules:
a) If no external intervention is necessary to recover a deferred error, a deferred error indication shall not be returned unless
required by the error handling parameters of a MODE SELECT command. The occurrence of the error may be logged;
b) If it is possible to associate a deferred error with an I_T nexus and with a particular function or a particular subset of data, and the error is
either unrecovered or required to be reported by the mode parameters, then a deferred error indication shall be returned for a com-
mand received on the I_T nexus associated with the deferred error. If an application client request received on an I_T nexus other than
the I_T nexus associated with the deferred error attempts to access the particular function or subset of data associated with the deferred
error and the TST field equals 000b, then the device server shall respond to the command with a BUSY or ACA ACTIVE status according
to the requirements in SAM-5. If an application client request received on an I_T nexus other than the I_T nexus associated with the
deferred error attempts to access the particular function or subset of data associated with the deferred error and the TST field equals
001b, then the command attempting the access shall not be blocked by the deferred error and the cause of the deferred error may result
in an error being reported for the command attempting the access;
b) If the device server is unable to associate a deferred error with an I_T nexus or with a particular subset of data, the device server shall
return a deferred error for one command received on each I_T nexus. If multiple deferred errors have accumulated for an I_T nexus, only
the last error shall be returned;
b) If the SCSI target device is unable to associate a deferred error with a particular logical unit, it shall establish a deferred error for every
logical unit and shall return the deferred error for one command for each logical unit received on each appropriate I_T nexus; or
b) If a task has never entered the enabled task state, and a deferred error occurs, the task shall be terminated with CHECK CONDITION sta-
tus and deferred error information returned in the sense data. If a deferred error occurs after a task has entered the enabled task state
and the task is affected by the error, the task shall be terminated with CHECK CONDITION status and the current error information shall
be returned in the sense data. In this case, if the current error information does not adequately define the deferred error condition, a
deferred error may be returned after the current error information has been returned. If a deferred error occurs after a task has entered
the enabled task state and the task completes successfully, the device server may choose to return the deferred error information after
the completion of the current command in conjunction with a subsequent command that has not begun processing.
NOTE A deferred error may indicate that an operation was unsuccessful long after GOOD status was
returned. If the application client is unable to replicate or recover from other sources the data that is
being written using cached or buffered write operations, then synchronization commands should be
performed before the critical data is destroyed. This is necessary for actions taken when deferred
errors occur in the storing of the data. The synchronizing process should provide the necessary
commands to allow returning CHECK CONDITION status and subsequent returning of deferred error
sense information after all cached or buffered operations are completed.