96-277r1 - Proposed Change in QErr for SPC-2
ROWEBER at acm.org
ROWEBER at acm.org
Wed Feb 12 13:01:44 PST 1997
* From the SCSI Reflector (scsi at symbios.com), posted by:
* ROWEBER at acm.org
*
X3T10/96-277r1
Date: 12 February, 1997
To: X3T10 Membership
From: Ralph Weber, X3T10 Alternate member from Symbios Logic
Subject: Proposed Change in QErr for SPC-2
Problem
In a multi-initiator environment, the current definition of QErr=1 can
produce a situation where no work is getting done because the device server
is continually reporting CHECK CONDITION status. Consider the following
scenario:
Initiator A Initiator B
----------- -----------
Send Tag 1
Send Tag 2
Send Tag 3
CHECK CONDITION for Tag 1
>>Tags 2 and 3 are aborted<<
Send REQUEST SENSE
Send Tag 4
Send Tag 5
CHECK CONDITION for Tag 5
>>Tag 4 is aborted.<<
Send REQUEST SENSE
(UNIT ATTENTION for aborted tasks)
Send Tag 6
Send Tag 7
CHECK CONDITION for Tag 7
>>Tag 6 is aborted.<<
Send REQUEST SENSE
(UNIT ATTENTION for aborted tasks)
I could go on and on, but you get the picture. If the hosts keep the
device server busy enough, there is a chance that the only work that will
ever get done (after the first error is encountered) is moving UNIT
ATTENTION sense data around.
The SCSI Working Group discussed this problem at their January 1997
meeting. The following proposal has been drafted to address the concerns
raised by the SCSI Working Group and to include the proposals made there.
Proposal
To resolve this problem, it is proposed that the QErr bit become a two-bit
QErr field by extending QErr to include bit position 2 in byte 3 in the
Control mode page in SPC-2. The text defining the QErr field will be
constructed so that the existing meanings of QErr=0 and QErr=1 will be
preserved, with new meanings being assigned to QErr=10 and QErr=11. The
following definition of the new QErr field is proposed:
The queue error management (QErr) field specifies how the device server
shall handle blocked tasks when another task receives a COMMAND
TERMINATED or CHECK CONDITION status (see table n1).
Table n1 - Queue error management (QErr)
Value Definition
00b Blocked tasks in the task set shall resume after an ACA
condition is cleared (see SAM).
01b All the blocked tasks in the task set shall be aborted when
the COMMAND TERMINATED or CHECK CONDITION status is sent.
A unit attention condition (see SAM) shall be generated for
each initiator that had blocked tasks aborted except for
the initiator to which the COMMAND TERMINATED or CHECK
CONDITION status was sent. The device server shall set
the additional sense code to COMMANDS CLEARED BY ANOTHER
INITIATOR.
10b Reserved
11b Blocked tasks in the task set belonging to the initiator to
which a COMMAND TERMINATED or CHECK CONDITION status is
sent shall be aborted when the status is sent.
NOTE n2 In a multi-initiator configuration, QErr=01b can produce
looping repetitions of CHECK CONDITION status being sent to various of
the multiple initiators or service requests being timed out because
tasks are aborted and unit attention notification fails due to the
absence of new service requests.
It also must be noted that the proposed change in the definition of QErr
affects the already approved proposal defining the Basic queuing model
(96-198r4). So that the Basic queuing model can be functional in a
multi-initiator configuration, I propose that the previous Basic queuing
model approval be amended to use QErr=11b and its associated definition
above wherever 96-198r4 uses QErr=1.
*
* For SCSI Reflector information, send a message with
* 'info scsi' (no quotes) in the message body to majordomo at symbios.com
More information about the T10
mailing list