Pre-execution checks
C
omm
an
ds
—
in
tro
du
ct
io
n
31
reported. If such an error exists, then the drive reports
CHECK CONDITION
. The sense data for the
command is set to
DEFERRED ERROR
(which was generated when some previous command failed).
Note that if a
UNIT ATTENTION
condition and a
DEFERRED ERROR
condition both exist for an
initiator, the
DEFERRED ERROR
condition will be reported first. This is because the operation leading
to the deferred error must have been older than that leading to the unit attention. The drive reports
the conditions in the order in which they arose.
Diagnostic Status check
This ensures that the drive is in a fit state to access the media. It does this by checking that there is
no
DIAGNOSTIC FAIL
status within the drive.
If the drive has failed diagnostics,
CHECK CONDITION
is reported with a sense key of
HARDWARE
ERROR
and additional sense of 400
X
h (diagnostic failure on component
X
).
Fixed Bit check
For the
READ
,
VERIFY
and
WRITE
commands, a Fixed bit set to 1 indicates that the length parameter
of the command is for fixed block mode. If fixed block mode is selected then the block size in the
Mode Select block descriptor must not be zero. Otherwise
CHECK CONDITION
is reported and the
sense data is set as described for the
ILLEGAL FIELD
check.
Flag Link check
This check ensures that the host has not set the Flag bit in the control byte of the command without
setting the Link bit as well. If the test fails then
CHECK CONDITION
is reported with a sense key of
ILLEGAL REQUEST
and additional sense of 2400h (invalid field in CDB). The Flag field is identified
as the bad field.
Illegal Command check
If the drive does not recognize the opcode of the command that it has been sent, it will do one of
the following:
•
Report
CHECK CONDITION
status. The sense key will be set to
ILLEGAL REQUEST
and the
additional sense code will be set to 2000h (invalid command opcode).
•
Report an invalid field in the command descriptor block. The sense key will be set to
ILLEGAL
REQUEST
, the additional sense code will be set to 2400h (invalid field in CDB) and the field
pointer in the sense data will be zero.
Illegal Field/Request check
Checks are performed to ensure the host has not set any of the following in the command
descriptor block:
•
a fixed field