Packetized L_Q IU type field changes

Mark_Heath at Mark_Heath at
Wed Dec 15 06:41:23 PST 1999

* From the T10 Reflector (t10 at, posted by:
* Mark_Heath at

> On your last comment you need to look at the note the SPI information unit
> sequence during initial connection figure in section 14.2 which states
> 'Shall only occur if the SPI L_Q information unit type field indicates a
> type of last command.'  If you look at which outputs from the DT DATA OUT
> phase are allowed you will see that only the L_Q IU/Status IU, MESSAGE OUT,
> and MESSAGE IN (although there is an error in that QAS should not be
> allowed) are allowed. The question about whether or not that restriction
> should be there in the first place is open for debate and needs to be
> decided by T10. So now it looks like we have both kicked the hornets
> nest!!!

I believe the wording of the third paragraph of subclause 14.3.1 suggests that
the target is allowed to break a Multiple Command sequence in order to send TASK
SET FULL.  (The wording is "After transferring all the SPI command information
unit bytes the target shall change to a DT DATA IN phase and transmit a SPI
status information unit with the status...")  I also agree that there are other
places in the standard (such as the one you pointed out) with somewhat
contradictory wording.

In my opinion, a target *must* be allowed to break a sequence of "Multiple
Command" LQ_IU/Command_IU's in order to return TASK SET FULL status.  If the
standard does not allow a target to do this, then the standard effectively
requires a target to have practically infinite resources.  Imagine this
scenario:  An initiator selects the target and sends one billion "Multiple
Command" LQ_IU/Command_IU pairs and finally sends a "Single Command"
LQ_IU/Command_IU pair to terminate the sequence.  At this point the target would
be required to send TASK SET FULL to most of those billion commands.  In other
words, the target would have to somehow remember the LUN and Tag of nearly one
billion commands (or 1 trillion, or 100 trillion, or however many commands the
initiator sent) in order to send TASK SET FULL to each I_L_Q nexus.

The whole point of TASK SET FULL is to provide the target a mechanism for saying
"I've run out of resources."  The only way that this mechanism can work is if
the target is able to send TASK SET FULL precisely when it runs out of
resources.  Therefore, I think the standard should be modified to clarify that
the target is in fact allowed to do so.

Mark Heath

p.s. I used the term "practically infinite resources" in the description above.
In reality, there is a limit to the number of possible LUN/Tag combinations.
The limit is slightly more than a trillion trillion.  This is just a little
beyond the amount of resources that most targets contain.  ;-)

* 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