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