[comp.periphs.scsi] Command Queueing in SCSI-2

eaw@Alliant.COM (Eric Woudenberg) (10/31/90)

Does anyone know if it is possible to start multiple CDBs between one
initiator and one target in SCSI-2 (so that, for instance, a drive may
do seek ordering?)  I imagine this would require the ability to
specify a transaction tag during the disconnect/reconnect messages.
It does not seem possible in SCSI-1.  Is it possible in SCSI-2?

Eric Woudenberg

ts@cup.portal.com (Tim W Smith) (11/01/90)

Yes.  When you select the target with ATN, you can follow the
identify with a queue tag message.  This is a two byte message.
The second byte is an identifier that identifies the request.
The target is allowed to queue such requests.

When the target reselects, it will send this tag back so you
can tell which I/O is continuing.

The first byte of the message tells how the request is to
be placed in the queue.  There are three possible values:

	HEAD OF QUEUE

		The request goes to the head of the queue

	SIMPLE

		The request goes in the queue.  Requests can
		be reordered by target subject to the conditions
		below.

	ORDERED

		The request goes in the queue.  All SIMPLE or
		ORDERED requests that are already in the queue
		will be completed before this request.

		All subsequent SIMPLE or ORDERED requests that
		arrive after this one will be completed after
		it.

						Tim Smith

neese@adaptx1.UUCP (11/03/90)

>/* ---------- "Command Queueing in SCSI-2" ---------- */
>Does anyone know if it is possible to start multiple CDBs between one
>initiator and one target in SCSI-2 (so that, for instance, a drive may
>do seek ordering?)  I imagine this would require the ability to
>specify a transaction tag during the disconnect/reconnect messages.
>It does not seem possible in SCSI-1.  Is it possible in SCSI-2?

In the SCSI-1 specification this was not allowed.  It did make provisions
for a target to accept commands from more than one initiator, but no
ordering was spec'd.
In the SCSI-2 spec, a new *optional* feature called tagged queueing is
implemented that allows a target to receive more than one command from
an initiator.  It also makes provisions for sorting and proioritizing
commands in the queue.
It does take both initiator and target to implement this.  But remember,
it is an option in the SCSI-2 spec, so you need to look for it specifically
in the product literature for a device.  FYI:  Our 1740 EISA does implement
the tag queue message when in native (1740) mode.

			Roy Neese
			Adaptec Senior SCSI Applications Engineer
			UUCP @  uunet!utacfd!cs.utexas.edu!
				  {nominil,merch,cpe}!adaptex!neese
				uunet!mlite!adaptex!neese

kc@hprnd.rose.hp.com (Kurt Chan) (11/14/90)

In addition, the consensus of the last ANSI working group in Austin was
that it was our intent to allow multiple *active* I/O processes to occur in
a target, as long as the target had multiple independent sense areas to
maintain REQUEST SENSE information for each process.

What this means is that you are permitted by the standard to make forward
progress on queued process 2 even though queued process 1 was received
first and may be mid-way through completion (of course, data integrity
remains a vendor-specific problem).

We are working on wording which may appear in a Technical Information
Bulletin to clarify this intent.

Kurt Chan
Hewlett-Packard
Roseville Networks Division