SAM and SPC directly conflict II

George Penokie gop at us.ibm.com
Thu Nov 29 06:25:14 PST 2001


* From the T10 Reflector (t10 at t10.org), posted by:
* "George Penokie" <gop at us.ibm.com>
*

Gary,
The question you ask is answered in section 5.5.3.6.3.2 of SPC-3 (and the
corresponding SPC-2 section) which states the following:

5.5.3.6.3.2 Failed persistent reservation preempt
If the preempting initiator's PREEMPT service action or PREEMPT AND ABORT
service action fails (e.g., TASK SET FULL, BUSY, SCSI protocol time-out or
time-out due to queue blocked due to failed initiator), the initiator may
issue a LOGICAL UNIT RESET task management function to the failing logical
unit to remove blocking tasks and then reissue the preempting service
action.



Bye for now,
George Penokie

Dept 2C6  114-2 N212
E-Mail:    gop at us.ibm.com
Internal:  553-5208
External: 507-253-5208   FAX: 507-253-2880



peterson_gary at emc.com@t10.org on 11/28/2001 10:35:47 AM

Sent by:  owner-t10 at t10.org


To:   ENDL_TX at computer.org, ralphoweber at compuserve.com
cc:   t10 at t10.org
Subject:  SAM and SPC directly conflict II



* From the T10 Reflector (t10 at t10.org), posted by:
* peterson_gary at emc.com
*
While we're on the subject, I have another question:

SPC-2 (rev20) section 5.5.3.6.4 (Preempting Persistent Reservations) states
that
"the device server shall clear any ACA or CA condition associated with an
initiator being preempted and shall clear any ACA tasks with an ACA
attribute from that initiator."

However, as I understand it, once a unit enters Contingent Allegiance, all
tasks in the Task Set (for all initiators) for that unit are
suspended/aborted and no new tasks from other initiators will be accepted
until the CA is cleared.

As I see it, the only way for a Preempt command to execute while a unit is
in CA is for it to arrive from the
faulted initiator, which makes no sense to me - why would a initiator want
to Preempt his own reservation?

My question is then, how can a Preempt command arrive and be executed when
a
unit is in CA?

------------------------------------------------------------------
Gary S. Peterson
CLARiiON Storage Systems, a Division of EMC Corp.
Phone:  508/382-7150
FAX:     508/382-7913
Cell:     508/472-4001
Email:   peterson_gary at emc.com


-----Original Message-----
From: Ralph Weber [mailto:ralphoweber at compuserve.com]
Sent: Friday, November 23, 2001 1:24 PM
To: T10, Reflector
Subject: SAM and SPC directly conflict


* From the T10 Reflector (t10 at t10.org), posted by:
* Ralph Weber <ralphoweber at compuserve.com>
*
Problem Statement:

I have found a direct conflict between SAM and SPC,(I mean SAM-1 and SPC-1
here).

SPCr11a says: "A QErr bit of one specifies all the blocked tasks in the
task
set shall be aborted when
the COMMAND TERMINATED or CHECK CONDITION status is sent."

SAMr18 says: "A Task Abort event is one of the following: ... An ACA
condition was cleared and the
QErr bit was set to one in the Control mode page (see the SPC standard);"

In SPC the tasks are aborted with the CHECK CONDITION status is sent (i.e.,
when status is returned to the
faulted initiator). In SAM the tasks are aborted when an ACA condition is
cleared (i.e., when the CLEAR ACA
task management function is processed).

Note that this conflict has been dutifully carried forward to the current
SAM-2 and SPC-3 even though
various proposals has modified both the definition of QErr and the SAM-2
task abort description.

Good News:

On the bright side, the difference between SAM and SPC cannot be observed
|from outside the target when
CA and autosense are used. Since that is becoming the most common case,
maybe any decision made here
will not matter very much.

If CA and REQUEST SENSE is used, the difference between the two cannot be
detected outside the
target unless TST=001b and QErr=01b. I hope this is a relatively rare case,
but that is another
topic.

Bad News:

The difference is always observable outside the target when ACA is used,
and
00-229r3 (Charles
Binford's "Task Aborted - SAM changes", which incorporated in SAM-2 r15,
Sept 2000) added
ways in which it can be observed.

Actions Taken (so far):

Because it is the smallest change, I have modified SAM-2 r21 to match SPC
(i.e., I am changed "cleared"
to "established" where it mattered).

I have rationalized this action as follows:

1) SAM never discusses what happens when a CA is established and QErr !=
00b. This is the most common
case in use in the field. Since SAM says nothing about it, the SPC
requirements apply.

There is a catch here because incorporation of 00-229r3 added specific
SAM-2
wording that makes
the behavior for CA to match that of ACA.

2) I can think of only one reason for blocking a bunch of tasks when the
status is sent only
to abort them when the CLEAR ACA is sent. That reason would be if a MODE
SELECT command
changed QErr to 00b while the ACA is active.

My guess is that 0% of the initiator code out there takes advantage of this
loophole and so
no initiator software is going to be affected.

That leaves just one issue ... Have any SCSI target implementors written
their firmware to
block tasks until an ACA is cleared and then abort them?

Clearly, I am hoping that the answer to this question is "No". If it is
"Yes" for anybody
then we have something interesting to discuss in January.

Happy Holidays.

Ralph...


*
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at t10.org

*
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at t10.org



*
* For T10 Reflector information, send a message with
* 'info t10' (no quotes) in the message body to majordomo at t10.org




More information about the T10 mailing list