SAM and SPC directly conflict II

peterson_gary at peterson_gary at
Wed Nov 28 08:35:47 PST 2001

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

SPC-2 (rev20) section (Preempting Persistent Reservations) states
"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

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

* From the T10 Reflector (t10 at, posted by:
* Ralph Weber <ralphoweber at>
Problem Statement:

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

SPCr11a says: "A QErr bit of one specifies all the blocked tasks in the task
set shall be aborted when

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

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.


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

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

More information about the T10 mailing list