SAM and SPC directly conflict II

Ralph Weber ralphoweber at
Wed Nov 28 09:53:22 PST 2001

* From the T10 Reflector (t10 at, posted by:
* Ralph Weber <ralphoweber at>
>From SAM-2 r20 PDF Page 88

  "If the TST field contains 000b, tasks created by other
  initiators while the ACA or CA condition is in effect
  shall not be entered into the faulted task set, except
  for a PERSISTENT RESERVE command with a Preempt and Clear
  service action (see"

There is a typo here.  "PERSISTENT RESERVE command with a
Preempt and Clear service action" s/b "PERSISTENT RESERVE OUT
command with a PREEMPT AND ABORT service action". This error
is fixed in SAM-2 r21.


peterson_gary at wrote:

> While we're on the subject, I have another question:
> SPC-2 (rev20) section (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
> -----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
> here).
> 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
> 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

* 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