SBP-2 Question

PJohansson at PJohansson at
Sun Sep 28 15:56:14 PDT 1997

* From the T10 (formerly SCSI) Reflector (t10 at, posted by:
* PJohansson at
In a message dated 97-09-27 15:53:22 EDT, srao at writes:

<<Initiator builds target command in ORB and puts it in the initiator linked

I hope the initiator also rings the target's DOORBELL register...

<<Initiator waits for target to do write transaction on statusFIFO indicating
completion of the request. ( Sets notify bit to 1 ) Initiator also starts a
timer for the ORB command to complete. (Implementation specific ).

Assume that target could not complete the command within the Initiator

Initiator eventually times out. In this case, how does Initiator inform the
target that it is no longer expecting any transaction on this ORB or any
pointers associated with the ORB?

>From the TASK MANAGEMENT chapter, it seems to me that the Initiator should
follow these steps:

1. If the task is not yet fetched by the target, then change rq_fmt field of
the ORB to be aborted to a value of three.
2. If not found in the Initiator list, send ABORT TASK to the target and wait
for the completion status for ABORT TASK.
3. If the response comes through, Initiator can free ORB and related space
|from its memory.>>

I assume  the "response" referred to is the status block from the original
ORB, and NOT the response from the ABORT TASK request. It is not safe to
release the ORB memory until the state of the task is definitively known.

<<4. If no completion status from target for ABORT TASK, what should
initiator do?

I think of two solutions:

     1. Write to RESET_START CSR.
     2. Force bus reset

Any other ideas?>>

If by "no completion status ... for ABORT TASK" you mean, literally,
that----well, the management agent is probably dead and your two choices are
all that's available.

On the other hand, if the ABORT TASK request completes but the initiator
*still* doesn't get a response for the timed-out ORB, I think there are other
possibilities that have narrower effects and therefore are preferred. In my
own ranking, the best first:

     1) ABORT TASK SET, a task management ORB sent to the management agent;
     2) Reset the fetch agent by a quadlet write to the AGENT_RESET register;
     3) Reset the target, for all initiators, by a quadlet write to the
RESET_START register; or
     4) Reset the bus.

Some confirmation or denial from disk vendors would be helpful.

Peter Johansson

Congruent Software, Inc.
3998 Whittle Avenue
Oakland, CA  94602

(510) 531-5472
(510) 531-2942 FAX

pjohansson 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