.fo off .pl 64 .tm 0 .bm 0 Date: Feb 15, 1992 X3T9.2/91-098 Rev 3 To: X3T9.2 Committee (SCSI) From: George Penokie (IBM) Subject: SCSI-3 Queuing Model Note: The following list of words are barred from SCSI-3: - execution -executing -execute - Active I/O Process - - Queued I/O Process - 1. Active I/O Process The concept of an Active I/O Process will not be used in SCSI-3. (Note: If it is used; one way to define it would be to define it as an I/O Process which leaves a trace in the device after power is removed.) 2. Queued I/O Process The concept of a Queued I/O Process will not be used in SCSI-3. 3. Current I/O Process The Current I/O Process is an I/O Process which is using the SCSI bus. A Current I/O Process begins when arbitration is won and ends with the release of BUSY. More than one Current I/O Process may exist at a time. 4. Bar Current I/O Process (GOP-We need a better name for this) An I/O Process which is not a Current I/O Process. 5. Simple I/O Process (Simple Tag) When an I/O Process is tagged as a Simple I/O Process it may become current at any time. 6. Ordered I/O Process (Ordered Tag) When an I/O Process is tagged as an Ordered I/O Process it shall complete in the same manor as if the target had no outstanding I/O Processes when the Ordered I/O Processes initial connection occurred. An Ordered I/O Process shall complete as if no other I/O Process is initiated. (Note: this makes no sense but what is trying to be said is; that any I/O Process received before the Ordered I/O Process shall complete before the Ordered I/O Process completes. If more than one Ordered is received the only thing the initiator is guaranteed is that the order in which the I/O Processes are sent is the order in which they will complete. If Simples are received after an Ordered there is no guarantee that the ordered will complete before some or all of the simples.) 6.1 Degree of Ordering The degree of ordering may be either on a per initiator or a per target bases and is selectable by a mode bit. 7. Priority I/O Process (Head of Queue Tag) When an I/O Process is tagged as a Priority I/O Process it shall complete before any I/O Processes received after the Priority I/O Process. Any I/O Process which was received before a Priority I/O Process may complete before the Priority I/O Process completes. 8. I/O Process Processing A target that can accept more than one I/O Process is capable of queueing. The number of I/O Processes that may be queued is dependent on the design of the target. The target may have any number of queues up to a maximum of one queue per I_T_L nexus. If an initiator attempts to send more I/O Processes to a target than can be accepted, they are rejected. I/O Processes that are queued may be Untagged or Tagged. Note: Several commands may be linked together to form a single I/O Process. 8.1 Untagged The target can accept only one I/O process for every Logical Unit under its control (i.e., a queue of one). 8.2 Untagged I/O Processes I/O Processes which establish an I_T_L nexus. 8.3 Tagged The initiator can have more than one I/O Process for every active Logical Unit under control of the target. The target has the freedom to optimize the sequence of I/O Process execution unless the initiator chooses to override the optimization. 8.4 Tagged I/O Processes I/O Processes which establish an I_T_L_Q nexus. 9. Exception Handling 9.1 Auto Contingent Allegiance Condition (ACA) The Auto Contingent Allegiance Condition Shall exit across all Initiators following the return of a Check Condition or Command Terminated status. The Auto Contingent Allegiance Condition shall be preserved for the I_T_x nexus until it is cleared. The Auto Contingent Allegiance Condition shall be cleared upon the generation of a hard reset condition, an Abort message, a Bus Device Reset message, or on the receipt of any subsequent non-priority I/O Processes. The Auto Contingent Allegiance is not cleared upon the generation of an Abort Tag message or receipt of a priority I/O Process. An I/O Processes that clears the Auto Contingent Allegiance shall not be treated any differently then if it had been received without an Auto Contingent Allegiance. While the Auto Contingent Allegiance exists the target shall respond to any other request for access to the logical unit from any device, other than the one which has the Auto Contingent Allegiance Condition, with a Busy status. An initiator which has an outstanding Auto Contingent Allegiance Condition may allow other devices to use the target by sending a Release Recovery message to the affected I_T_x nexus. While the Auto Contingent Allegiance exists no existing Bar Current I/O Processes shall become Current I/O Processes. 9.2 Exception Checking All parity type errors are handled as they occur. Non-tagged and tagged I/O Processes may be intermixed. The handling of the non-tagged I/O Processes in the queue is vender specific. There is no requirement that the non-tagged I/O Processes comply with the SCSI-3 queueing model. If a tagged I/O Process is received with an invalid tag the target shall create a check condition with a key of Illegal Request, an ASC of Tagged Overlapped Commands, and an ASCQ which contains the value of the illegal tag. (Note: This requires a new ASC; 4Dh is recommended.) NEEDS RESOLUTION: Does a duplicate nexus about only the duplicate I/O Processes and enter an ACA condition or does it abort all I/O Processes for that initiator???