Sam 5 R 05
Sam 5 R 05
Information technology -
SCSI Architecture Model - 5 (SAM-5)
This is an internal working document of T10, a Technical Committee of Accredited Standards Committee INCITS
(International Committee for Information Technology Standards). As such this is not a completed standard and
has not been approved. The contents may be modified by the T10 Technical Committee. The contents are
actively being modified by T10. This document is made available for review and comment only.
Permission is granted to members of INCITS, its technical committees, and their associated task groups to
reproduce this document for the purposes of INCITS standardization activities without further permission,
provided this notice is included. All other rights are reserved. Any duplication of this document for commercial or
for-profit use is strictly prohibited.
T10 Technical Editor: George Penokie
LSI Corporation
3033 41st Street NW, Suite 100
Rochester, MN 55901
USA
Telephone: 507-328-9017
Email: [Link]@[Link]
Reference number
ISO/IEC 14776-415:201x
ANSI INCITS ***-201x
Points of Contact
International Committee for Information Technology Standards (INCITS) T10 Technical Committee
INCITS Secretariat
Suite 610
1101 K Street, NW
Washington, DC 20005
USA
Telephone: 202-737-8888
Web site: [Link]
Email: incits@[Link]
Document Distribution
INCITS Online Store
managed by Techstreet
1327 Jones Drive
Ann Arbor, MI 48105
USA
Secretariat
Information Technology Industry Council
Approved [Link]
American National Standards Institute, Inc.
ABSTRACT
This standard specifies the SCSI Architecture Model. The purpose of the architecture is to provide a common
basis for the coordination of SCSI standards and to specify those aspects of SCSI I/O system behavior that are
independent of a particular technology and common to all implementations.
American Approval of an American National Standard requires verification by ANSI that the
requirements for due process, consensus, and other criteria for approval have been met by
National the standards developer. Consensus is established when, in the judgment of the ANSI Board
of Standards Review, substantial agreement has been reached by directly and materially
Standard affected interests. Substantial agreement means much more than a simple majority, but not
necessarily unanimity. Consensus requires that all views and objections be considered, and
that effort be made towards their resolution.
The use of American National Standards is completely voluntary; their existence does not in
any respect preclude anyone, whether he has approved the standards or not, from
manufacturing, marketing, purchasing, or using products, processes, or procedures not
conforming to the standards.
The American National Standards Institute does not develop standards and will in no
circumstances give interpretation on any American National Standard. Moreover, no person
shall have the right or authority to issue an interpretation of an American National Standard
in the name of the American National Standards Institute. Requests for interpretations
should be addressed to the secretariat or sponsor whose name appears on the title page of
this standard.
CAUTION NOTICE: This American National Standard may be revised or withdrawn at any
time. The procedures of the American National Standards Institute require that action be
taken periodically to reaffirm, revise, or withdraw this standard. Purchasers of American
National Standards may receive current information on all standards by calling or writing the
American National Standards Institute.
CAUTION: The developers of this standard have requested that holders of patents that
may be required for the implementation of the standard, disclose such patents to the
publisher. However, neither the developers nor the publisher have undertaken a patent
search in order to identify which patents, if any, may apply to this standard. As of the date
of publication of this standard, following calls for the identification of patents that may be
required for the implementation of the standard, no such claims have been made. No
further patent search is conducted by the developer or the publisher in respect to any
standard it processes. No representation is made or implied that licenses are not
required to avoid infringement in the use of this standard.
Published by
American National Standards Institute
11 W. 42nd Street, New York, New York 10036
Copyright © 2010 by Information Technology Industry Council (ITI).
All rights reserved.
No part of this publication may be reproduced in any
form, in an electronic retrieval system or otherwise,
without prior written permission of ITI, 1101 K Street NW, Suite 610,
Washington, DC 20005.
Printed in the United States of America
Revision Information
“While going through SAM-5r01 I noticed that you put the new Additional Response Information
argument definition in QUERY TASK SET. Isn’t this supposed to be in QUERY TASK?”
The answer is yes it should have been in QUERY TASK.
e) Moved section 1.2 Requirements precedence to a new section 4.2 Compliance requirements. This was a
request from ISO to remove requirements from the scope section.
f) Moved section 1.3 SCSI standards family into the front matter just before section 1. This was a request
from ISO;
g) Added in a more specific set of rules to ordered and unordered lists in section 3.4 Editorial conventions;
h) Added the statement “notes are numbered consecutively throughout this standard” in section 3.4
Editorial conventions;
i) Moved the annex acronyms and bibliography from annex A to a new Annex to conform to ISO styles;
j) Created a real table for the command management events in section 8.4; and
k) Removed the statement “in previous versions of this standard” and replaced that wording with a
reference to the actual standard. In all cases that was either SAM-2 or SAM-3. Added SAM-2 and SAM-3
to the acronyms and bibliography.
l) 09-017r1 - QUERY TASK TMF Progress Indicator [Knight].
Contents
Page
Points of Contact.................................................................................................................................................... ii
Contents................................................................................................................................................................vii
Tables ...................................................................................................................................................................xii
Figures .................................................................................................................................................................xiv
Foreword .............................................................................................................................................................. xv
Introduction ..........................................................................................................................................................xvi
SCSI standards family .........................................................................................................................................xvi
1 Scope .................................................................................................................................................................. 1
1.1 Introduction.................................................................................................................................................... 1
2 Normative references.......................................................................................................................................... 2
2.1 Normative references .................................................................................................................................... 2
2.2 Approved references ..................................................................................................................................... 2
2.3 References under development .................................................................................................................... 2
2.4 Other references ........................................................................................................................................... 2
7.12.2 Send Task Management Request SCSI transport protocol service request...................................... 110
7.12.3 Task Management Request Received SCSI transport protocol service indication............................ 111
7.12.4 Task Management Function Executed SCSI transport protocol service response............................ 111
7.12.5 Received Task Management Function Executed SCSI transport protocol service confirmation ....... 111
7.13 Task management function example ...................................................................................................... 112
Annex B (informative) SCSI Initiator Port attributes and SCSI Target Port attributes supported by
SCSI transport protocols............................................................................................................................... 130
Tables
Page
Table 1 — Numbering conventions...................................................................................................................... 12
Table 2 — Constraint and note notation .............................................................................................................. 12
Table 3 — Class diagram notation for classes .................................................................................................... 13
Table 4 — Multiplicity notation ............................................................................................................................. 14
Table 5 — Class diagram notation for associations............................................................................................. 14
Table 6 — Class diagram notation for aggregations............................................................................................ 15
Table 7 — Class diagram notation for generalizations ........................................................................................ 16
Table 8 — Class diagram notation for dependency ............................................................................................. 16
Table 9 — Object diagram notation for objects.................................................................................................... 17
Table 10 — Object diagram notation for link........................................................................................................ 17
Table 11 — Single level LUN structure using peripheral device addressing method .......................................... 43
Table 12 — Single level LUN structure using flat space addressing method ...................................................... 44
Table 13 — Single level LUN structure using extended flat space addressing method....................................... 44
Table 14 — Eight byte LUN structure adjustments .............................................................................................. 46
Table 15 — Eight byte LUN structure .................................................................................................................. 46
Table 16 — Format of addressing fields .............................................................................................................. 47
Table 17 — ADDRESS METHOD field ...................................................................................................................... 47
Table 18 — Peripheral device addressing format ................................................................................................ 48
Table 19 — Flat space addressing format ........................................................................................................... 49
Table 20 — Logical unit addressing format ......................................................................................................... 50
Table 21 — Extended logical unit addressing format .......................................................................................... 52
Table 22 — LENGTH field and related sizes .......................................................................................................... 52
Table 23 — Two byte extended logical unit addressing format ........................................................................... 52
Table 24 — Four byte extended logical unit addressing format........................................................................... 53
Table 25 — Six byte extended logical unit addressing format ............................................................................. 53
Table 26 — Eight byte extended logical unit addressing format .......................................................................... 53
Table 27 — Logical unit extended addressing ..................................................................................................... 54
Table 28 — Well known logical unit extended addressing format........................................................................ 54
Table 29 — Extended flat space addressing format ............................................................................................ 55
Table 30 — Logical unit not specified extended addressing format .................................................................... 55
Table 31 — Nexus ............................................................................................................................................... 56
Table 32 — CONTROL byte.................................................................................................................................... 70
Table 33 — Status codes..................................................................................................................................... 70
Table 34 — Status qualifier format ...................................................................................................................... 72
Table 35 — SCOPE field........................................................................................................................................ 72
Table 36 — QUALIFIER field................................................................................................................................... 73
Table 37 — SCSI device conditions that abort commands in a SCSI initiator device.......................................... 82
Table 38 — SCSI device conditions that abort commands in a SCSI target device ............................................ 83
Table 39 — Task management functions that abort commands.......................................................................... 84
Table 40 — Command related conditions that abort commands ......................................................................... 85
Table 41 — Command handling when ACA is not in effect ................................................................................. 87
Table 42 — Aborting commands when an ACA is not established...................................................................... 88
Table 43 — Blocking and aborting commands when an ACA is established....................................................... 89
Table 44 — Handling for new commands received on a faulted I_T nexus during ACA ..................................... 90
Table 45 — Handling for new commands received on non-faulted I_T nexuses during ACA ............................. 91
Table 46 — Unit attention condition precedence level......................................................................................... 94
Table 47 — Unit attention additional sense codes for events detected by SCSI target devices........................ 100
Table 48 — Task Management Functions ......................................................................................................... 104
Table 49 — Additional Response Information argument for QUERY TASK ...................................................... 108
Table 50 — Additional Response Information argument for QUERY ASYNCHRONOUS EVENT.................... 109
Table 51 — UADE DEPTH field ............................................................................................................................. 109
Table 52 — Command management events that cause changes in command state........................................ 115
Table 53 — Command state nomenclature ....................................................................................................... 115
Table 54 — Task attributes ................................................................................................................................ 117
Table 55 — Command priority ........................................................................................................................... 118
Figures
Page
Figure 1 — SCSI document structure ..................................................................................................................xvi
Figure 1 — Examples of association relationships in class diagrams.................................................................. 15
Figure 2 — Examples of aggregation relationships in class diagrams................................................................. 15
Figure 3 — Example of generalization relationships in class diagrams ............................................................... 16
Figure 4 — Example of a dependency relationship in class diagrams................................................................. 17
Figure 5 — Examples of link relationships for object diagrams ........................................................................... 18
Figure 6 — Example state diagram ..................................................................................................................... 19
Figure 7 — Requirements precedence ................................................................................................................ 21
Figure 8 — Client-server model ........................................................................................................................... 21
Figure 9 — SCSI client-server model .................................................................................................................. 22
Figure 10 — SCSI I/O system and domain model ............................................................................................... 24
Figure 11 — SCSI Domain class diagram overview ............................................................................................ 25
Figure 12 — SCSI Domain class diagram ........................................................................................................... 26
Figure 13 — SCSI domain object diagram .......................................................................................................... 26
Figure 14 — SCSI Device class diagram............................................................................................................. 27
Figure 15 — SCSI Port class diagram ................................................................................................................. 28
Figure 16 — SCSI Initiator Device class diagram ................................................................................................ 31
Figure 17 — SCSI Target Device class diagram ................................................................................................. 34
Figure 18 — Level 1 Hierarchical Logical Unit class............................................................................................ 35
Figure 19 — Logical Unit class diagram .............................................................................................................. 38
Figure 20 — Eight byte LUN structure adjustments............................................................................................. 45
Figure 21 — Logical unit selection using the peripheral device addressing format ............................................. 49
Figure 22 — Logical unit selection using the logical unit addressing format........................................................ 51
Figure 23 — SCSI device functional models ....................................................................................................... 57
Figure 24 — Multiple port target SCSI device structure model ............................................................................ 58
Figure 25 — Multiple port SCSI initiator device structure model.......................................................................... 59
Figure 26 — Multiple port SCSI device structure model ...................................................................................... 60
Figure 27 — SCSI target device configured in a single SCSI domain ................................................................. 61
Figure 28 — SCSI target device configured in multiple SCSI domains ............................................................... 62
Figure 29 — SCSI target device and SCSI initiator device configured in a single SCSI domain......................... 62
Figure 30 — Protocol service reference model.................................................................................................... 63
Figure 31 — SCSI transport protocol service mode............................................................................................. 64
Figure 32 — Request-Response SAL transaction and related STPL services .................................................... 65
Figure 33 — SCSI transport protocol service model for data transfers................................................................ 65
Figure 34 — Device server data transfer transaction and related STPL services ............................................... 66
Figure 35 — SCSI transport protocol service model for Terminate Data Transfer .............................................. 66
Figure 36 — Device server Terminate Data Transfer transaction and related STPL services ............................ 67
Figure 37 — Model for Data-In and Data-Out data transfers ............................................................................... 77
Figure 38 — Command processing events.......................................................................................................... 86
Figure 39 — Events and event notifications for SCSI target devices................................................................... 98
Figure 40 — Events and event notifications for SCSI initiator devices ................................................................ 99
Figure 41 — Task management processing events .......................................................................................... 113
Figure 42 — Example of Dormant state command behavior ............................................................................. 117
Figure 43 — Command states ........................................................................................................................... 119
Figure 44 — Commands having the HEAD OF QUEUE task attribute and blocking boundaries (example 1) ....... 121
Figure 45 — Commands having the HEAD OF QUEUE task attribute and blocking boundaries (example 2) ....... 122
Figure 46 — Commands having ORDERED task attributes and blocking boundaries.......................................... 123
Figure 47 — Commands having ACA task attributes example ........................................................................... 124
Foreword
This foreword is not part of American National Standard INCITS ***-201x.
The purpose of this standard is to provide a basis for the coordination of SCSI standards development and to
define requirements, common to all SCSI technologies and implementations, that are essential for compatibility
with host SCSI application software and device-resident firmware across all SCSI transport protocols. These
requirements are defined through a reference model that specifies the behavior and abstract structure that is
generic to all SCSI I/O system implementations.
With any technical document there may arise questions of interpretation as new products are implemented.
INCITS has established procedures to issue technical opinions concerning the standards developed by INCITS.
These procedures may result in SCSI Technical Information Bulletins being published by INCITS.
These Bulletins, while reflecting the opinion of the Technical Committee that developed the standard, are
intended solely as supplementary information to other users of the standard. This standard, ANSI INCITS
***-201x, as approved through the publication and voting procedures of the American National Standards
Institute, is not altered by these bulletins. Any subsequent revision to this standard may or may not reflect the
contents of these Technical Information Bulletins.
Current INCITS practice is to make Technical Information Bulletins available through:
INCITS Online Store [Link]
managed by Techstreet Telephone: 1-734-302-7801 or
1327 Jones Drive 1-800-699-9277
Ann Arbor, MI 48105 Facsimile: 1-734-302-7811
or
The INCITS Technical Committee T10 on SCSI Storage Interfaces, that reviewed this standard, had the following
members:
John B. Lohmeyer, Chair
Mark Evans, Vice-Chair
Ralph O. Weber, Secretary
Introduction
This standard is divided into the following clauses and annexes:
Clause 1 is the scope.
Clause 2 enumerates the normative references that apply to this standard.
Clause 3 describes the definitions, symbols, and abbreviations used in this standard.
Clause 4 describes the overall SCSI architectural model.
Clause 5 describes the SCSI command model element of the SCSI architecture.
Clause 6 describes the events that may be detected by a SCSI device.
Clause 7 describes the task management functions common to SCSI devices.
Clause 8 describes the task set management capabilities common to SCSI devices.
Annex A summarizes the identifier and name definitions of the SCSI transport protocols.
Annex B summarizes the SCSI Initiator Port attributes and SCSI Target Port attributes supported by SCSI
transport protocols.
Annex C lists the terminology differences between this standard and previous versions of this standard.
Interconnects
(e.g., SAS-2.1, Fibre Channel)
The SCSI document structure in figure 1 is intended to show the general applicability of the documents to one
another. Figure 1 is not intended to imply a relationship such as a hierarchy, protocol stack, or system
architecture.
The functional areas identified in figure 1 characterize the scope of standards within a group as follows:
SCSI Architecture Model: Defines the SCSI systems model, the functional partitioning of the SCSI standard set
and requirements applicable to all SCSI implementations and implementation standards.
Device-Type Specific Command Sets: Implementation standards that define specific device types including a
device model for each device type. These standards specify the required commands and behaviors that are
specific to a given device type and prescribe the requirements to be followed by a SCSI initiator device when
sending commands to a SCSI target device having the specific device type. The commands and behaviors for a
specific device type may include by reference commands and behaviors that are shared by all SCSI devices.
Shared Command Set: An implementation standard that defines a model for all SCSI device types. This
standard specifies the required commands and behavior that is common to all SCSI devices, regardless of
device type, and prescribes the requirements to be followed by a SCSI initiator device when sending commands
to any SCSI target device.
SCSI Transport Protocols: Implementation standards that define the requirements for exchanging information
so that different SCSI devices are capable of communicating.
Interconnects: Implementation standards that define the communications mechanism employed by the SCSI
transport protocols. These standards may describe the electrical and signaling requirements essential for SCSI
devices to interoperate over a given interconnect. Interconnect standards may allow the interconnection of
devices other than SCSI devices in ways that are outside the scope of this standard.
The term SCSI is used to refer to the family of standards described in this subclause.
1.1 Introduction
The set of SCSI (Small Computer System Interface) standards consists of this standard and the SCSI
implementation standards described in 2. This standard defines a reference model that specifies common
behaviors for SCSI devices, and an abstract structure that is generic to all SCSI I/O system implementations.
The set of SCSI standards specifies the interfaces, functions, and operations necessary to ensure
interoperability between conforming SCSI implementations. This standard is a functional description. Conforming
implementations may employ any design technique that does not violate interoperability.
The following concepts from previous versions of this standard are made obsolete by this standard:
a) support for the SPI-5 SCSI transport protocol;
b) Contingent Allegiance;
c) the TARGET RESET task management function;
d) basic task management model;
e) untagged tasks; and
f) linked command function.
2 Normative references
NOTE 1 - Copies of IETF standards may be obtained through the Internet Engineering Task Force (IETF) at
[Link]
NOTE 2 - For more information on the UML specification, contact the Object Modeling Group at
[Link]
3.1 Definitions
3.1.1 ACA command: A command with the ACA task attribute (see 3.1.8, and 8.6.5).
3.1.2 additional sense code: A combination of the ADDITIONAL SENSE CODE field and the ADDITIONAL SENSE
CODE QUALIFIER field in the sense data (see 3.1.113 and SPC-3).
3.1.3 aggregation: When referring to classes (see 3.1.13), a form of association that defines a whole-part
relationship between the whole (i.e., aggregate) and its parts.
3.1.4 application client: A class whose objects are, or an object that is, the source of commands and task
management function requests. See 4.6.10.
3.1.5 argument: A datum provided as input to or output from a procedure call (see 3.1.84).
3.1.6 association: When referring to classes (see 3.1.13), a relationship between two or more classes that
specifies connections among their objects (i.e., a relationship that specifies that objects of one class are
connected to objects of another class).
3.1.7 attribute: When referring to classes (see 3.1.13), a named property of a class that describes the range of
values that the class or its objects may hold. When referring to objects (see 3.1.74), a named property of the
object.
3.1.8 auto contingent allegiance (ACA): The task set condition established following the completion of a
command with a CHECK CONDITION status when the NACA bit is set to one in the CONTROL byte. See 5.9.
3.1.9 background operation: An operation started by a command that continues processing after the
command is no longer in the task set. See 5.5.
3.1.10 blocked command state: A state in which a command is prevented from completing due to an ACA
condition. See 8.5.3.
3.1.11 blocking boundary: A task set boundary denoting a set of conditions that inhibit commands outside the
boundary from entering the enabled command state. See 8.9.
3.1.13 class: A description of a set of objects that share the same attributes, operations, relationships (e.g.,
aggregation, association, generalization, and dependency), and semantics. Classes may have attributes and
may support operations.
3.1.14 class diagram: Shows a set of classes and their relationships. Class diagrams are used to illustrate the
static design view of a system. See [Link].
3.1.15 client-server: A relationship established between a pair of distributed entities where one (the client)
requests the other (the server) to perform some operation or unit of work on the client's behalf. See 4.4.
3.1.16 client: An entity that requests a service from a server. This standard defines one client, the application
client.
3.1.18 command descriptor block (CDB): A structure used to communicate a command from an application
client to a device server. A CDB may have a fixed length of 6 bytes, 10 bytes, 12 bytes, or 16 bytes, or a variable
length of between 12 and 260 bytes. See 5.2 and SPC-4.
3.1.19 command identifier: The portion of an I_T_L_Q nexus (i.e., the Q) that is the numerical identifier of the
command (see 3.1.17) within an I_T_L nexus. See 4.8.2.
3.1.20 command priority: The relative scheduling importance of a command having the SIMPLE task attribute
among the set of commands having the SIMPLE task attribute already in the task set. See 8.7.
3.1.21 command standard: A SCSI standard that defines the model, commands, and parameter data for a
device type (e.g., SPC-4, SBC-3). See clause 1.
3.1.22 completed command: A command that has completed with a service response of COMMAND COMPLETE.
3.1.23 confirmation: A response returned to an application client or device server that signals the completion of
a service request.
3.1.24 confirmed SCSI transport protocol service: A service available at the SCSI transport protocol service
interface that includes a confirmation of completion. See 4.10.
3.1.25 constraint: When referring to classes (see 3.1.13) and objects (see 3.1.74), a mechanism for specifying
semantics or conditions that are maintained as true between entities (e.g., a required condition between associa-
tions).
3.1.26 copy manager: A class whose objects are, or an object that is an application client that manages
extended copy operations (see SPC-4) from within a logical unit. See 4.6.21.
3.1.27 current command: A command that has a data transfer SCSI transport protocol service request in
progress (see 5.4.3) or is in the process of sending command status. Each SCSI transport protocol standard may
define the SCSI transport protocol specific conditions under which a command is considered a current
command.
3.1.29 dependency: A relationship between two elements in which a change to one element (e.g., the server)
may affect or supply information needed by the other element (e.g., the client).
3.1.30 dependent logical unit: A logical unit that is addressed via some other logical unit(s) in a hierarchical
logical unit structure (see 3.1.45) and that is at a higher numbered level in the hierarchy than the referenced
logical unit (see [Link]).
3.1.31 device model: The description of a type of SCSI target device (e.g., a block device or a stream device).
3.1.32 device server: A class whose objects process, or an object that processes, commands according to the
requirements for command management described in clause 8. See 4.6.20.
3.1.33 device service request: A request submitted by an application client conveying a command to a device
server.
3.1.34 device service response: The response returned to an application client by a device server on
completion of a command.
3.1.35 domain: An I/O system consisting of a set of SCSI devices and a service delivery subsystem, where the
SCSI devices interact with one another by means of the service delivery subsystem.
3.1.36 dormant command state: A state in which a command is prevented from entering the enabled
command state (see 3.1.37) due to the presence of certain other commands in the task set. See 8.5.4.
3.1.37 enabled command state: A state in which a command may complete at any time. See 8.5.2.
3.1.38 extended logical unit addressing: The logical unit addressing method used by special function logical
units (e.g., well known logical units). See 4.7.10.
3.1.39 faulted I_T nexus: The I_T nexus on which a command was terminated with a CHECK CONDITION
status resulted in the establishment of an ACA. The faulted I_T nexus condition is cleared when the ACA
condition is cleared.
3.1.40 faulted task set: A task set that contains a faulting command. The faulted task set condition is cleared
when the ACA condition resulting from the CHECK CONDITION status is cleared.
3.1.41 faulting command: A command that has terminated with a status of CHECK CONDITION that resulted
in the establishment of an ACA (see 3.1.8).
3.1.42 field: A group of one or more contiguous bits, part of a larger structure (e.g., a CDB (see 3.1.18) or sense
data (see 3.1.113)).
3.1.43 generalization: When referring to classes (see 3.1.13), a relationship among classes where one class
(i.e., superclass) shares the attributes and operations on one or more classes (i.e., subclasses).
3.1.44 hard reset: A condition resulting from a power on condition or a reset event in which the SCSI device
performs the hard reset operations described in 6.3.2, SPC-4, and the appropriate command standards.
3.1.45 hierarchical logical unit: An inverted tree structure for forming and parsing LUNs (see 3.1.67)
containing up to four addressable levels (see 4.6.15).
3.1.46 I_T nexus: A nexus between a SCSI initiator port and a SCSI target port. See 4.8.
3.1.47 I_T nexus loss: A condition resulting from a hard reset condition or an I_T nexus loss event in which the
SCSI device performs the I_T nexus loss operations described in 6.3.4, SPC-4, and the appropriate command
standards.
3.1.48 I_T nexus loss event: A SCSI transport protocol specific event that results in an I_T nexus loss
condition as described in 6.3.4.
3.1.49 I_T_L nexus: A nexus between a SCSI initiator port, a SCSI target port, and a logical unit. See 4.8.
3.1.50 I_T_L_Q nexus: A nexus between a SCSI initiator port, a SCSI target port, a logical unit, and a
command. See 4.8.
3.1.51 I_T_L_Q nexus transaction: The information transferred between SCSI ports in a single data structure
with defined boundaries (e.g., an information unit).
3.1.52 I_T_L_x nexus: Either an I_T_L nexus or an I_T_L_Q nexus. See 4.8.
3.1.54 implementation specific: A requirement or feature that is defined in a SCSI standard but whose imple-
mentation may be specified by the system integrator or vendor.
3.1.55 incorrect logical unit number: The logical unit number of a logical unit that does not exist in the SCSI
target device when addressed through a given I_T nexus.
3.1.56 incorrect logical unit: A logical unit that does not exist in the SCSI target device when addressed by a
given I_T_L nexus.
3.1.57 initiator port identifier: A value by which a SCSI initiator port is referenced within a domain. See 4.6.7.
3.1.58 initiator port name: A name (see 3.1.71) of a SCSI initiator port that is world wide unique within the
SCSI transport protocol of the SCSI domain of that SCSI initiator port (see 4.6.5). The name may be made
available to other SCSI devices or SCSI ports in that SCSI domain in SCSI transport protocol specific ways.
3.1.59 instance: A concrete manifestation of an abstraction to which a set of operations may be applied and
which may have a state that stores the effects of the operation (e.g., an object is an instance of a class).
3.1.60 in transit: Information that has been delivered to a service delivery subsystem for transmission, but not
yet arrived at the intended recipient.
3.1.61 implicit head of queue: An optional processing model for specified commands wherein a command
may be treated as if it had been received with a HEAD OF QUEUE task attribute. See 8.2.
3.1.62 layer: A subdivision of the architecture constituted by SCSI initiator device and SCSI target device
elements at the same level relative to the interconnect.
3.1.63 link: An individual connection between two objects in an object diagram representing an instance of an
association.
3.1.64 logical unit: A class whose objects implement, or an object that implements, a device model that
manages and processes commands sent by an application client. See 4.6.19.
3.1.65 logical unit inventory: The list of the LUNs reported by a REPORT LUNS command (see SPC-4).
3.1.66 logical unit name: A name (see 3.1.71) of a logical unit that is world wide unique within the SCSI
transport protocol of a SCSI domain in which the SCSI device containing the logical unit has SCSI ports (see
[Link]). The logical unit name may be made available to other SCSI devices or SCSI ports in SCSI transport
protocol specific ways.
3.1.67 logical unit number (LUN): A 64-bit or 16-bit identifier for a logical unit. See 4.7.
3.1.68 logical unit reset: A condition resulting from a hard reset condition or a logical unit reset event in which
the logical unit performs the logical unit reset operations described in 6.3.3, SPC-4, and the appropriate
command standards.
3.1.69 logical unit reset event: An event that results in a logical unit reset condition as described in 6.3.3.
3.1.70 multiplicity: When referring to classes (see 3.1.13), an indication of the range of allowable instances
that a class or an attribute may have.
3.1.71 name: A label of an object that is unique within a specified context and should never change.
3.1.72 nexus: A relationship between two SCSI devices, and the SCSI initiator port and SCSI target port objects
within those SCSI devices. See 4.8.
3.1.73 non-faulted I_T nexus: An I_T nexus that is not a faulted I_T nexus (see 3.1.39).
3.1.74 object: An entity with a well-defined boundary and identity that encapsulates state and behavior. All
objects are instances of classes (see 3.1.59).
3.1.75 object diagram: Shows a set of objects and their relationships at a point in time. Object diagrams are
used to illustrate static shapshots of instances of the things found in class diagrams. See [Link].
3.1.76 operation: A service that may be requested from any object of the class in order to eaffect behavior.
Operations describe what a class is allowed to do and may be a request or a query. A request may change the
state of the object but a query should not.
3.1.77 peer entities: Entities within the same layer (see 3.1.62).
3.1.78 power cycle: Power being removed from and later applied to a SCSI device.
3.1.79 power loss expected: A condition resulting from a power loss expected event in which the logical unit
performs the power loss expected operations described in 6.3.5, SPC-4, and the appropriate transport protocol
and command standards.
3.1.80 power loss expected event: An event that results in a power loss expected condition (see 3.1.79) as
described in 6.3.5.
3.1.81 power on: A condition resulting from a power on event in which the SCSI device performs the power on
operations described in 6.3.1, SPC-4, and the appropriate command standards.
3.1.82 power on event: Power being applied to a SCSI device, resulting in a power on condition as described
in 6.3.1.
3.1.84 procedure call: The model used by this standard for the interfaces involving both the SAL (see 3.1.95)
and STPL (see 3.1.106), having the appearance of a programming language function call. See 3.6.2.
3.1.85 protocol: A specification and/or implementation of the requirements governing the content and
exchange of information passed between distributed entities through a service delivery subsystem.
3.1.86 queue: The arrangement of commands within a task set (see 3.1.130).
3.1.87 receiver: A client or server that is the recipient of a service delivery transaction.
3.1.88 reference model: A standard model used to specify system requirements in an implementation-
independent manner.
3.1.89 relative port identifier: An identifier for a SCSI port that is unique within a SCSI device. See [Link].
3.1.92 reset event: A SCSI transport protocol specific event that results in a hard reset condition as described
in 6.3.2.
3.1.94 role: When referring to classes (see 3.1.13) and objects (see 3.1.74), a label at the end of an associ-
ation or aggregation that defines a relationship to the class on the other side of the association or aggregation.
3.1.95 SCSI application layer (SAL): The protocols and procedures that implement or issue commands and
task management functions by using services provided by a STPL (see 3.1.106).
3.1.96 SCSI device: A class whose objects are, or an object that is, connected to a service delivery subsystem
and supports a SCSI application protocol. See 4.6.4.
3.1.97 SCSI device name: A name (see 3.1.71) of a SCSI device that is world wide unique within the SCSI
transport protocol of a SCSI domain in which the SCSI device has SCSI ports (see [Link]). The SCSI device
name may be made available to other SCSI devices or SCSI ports in SCSI transport protocol specific ways.
3.1.98 SCSI event: A condition defined by this standard (e.g., logical unit reset) that is detected by SCSI device
and that requires notification of its occurrence within the SCSI device. See clause 6.
3.1.99 SCSI I/O system: An I/O system, consisting of two or more SCSI devices, a SCSI interconnect and a
SCSI transport protocol that collectively interact to perform SCSI I/O operations.
3.1.100 SCSI initiator device: A class whose objects originate, or an object that originates, device service and
task management requests to be processed by a SCSI target device and receives device service and task
management responses from SCSI target devices.
3.1.101 SCSI initiator port: A class whose objects act, or an object that acts, as the connection between appli-
cation clients and a service delivery subsystem through which requests and confirmations are routed. See 4.6.7.
3.1.102 SCSI port: A class whose objects connect, or an object that connects, the application client, device
server or task manager to a service delivery subsystem through which requests, indications, responses, and
confirmations are routed. SCSI port is synonymous with port. A SCSI port is one of: a SCSI initiator port (see
3.1.101) or a SCSI target port (see 3.1.105). See 4.6.5.
3.1.103 SCSI port identifier: A value by which a SCSI port is referenced within a domain. The SCSI port
identifier is either an initiator port identifier (see 3.1.57) or a target port identifier (see 3.1.121).
3.1.104 SCSI target device: A class whose objects receive, or an object that receives, device service and task
management requests for processing and sends device service and task management responses to SCSI
initiator devices. See 4.6.14.
3.1.105 SCSI target port: A class whose objects act, or an object that acts, as the connection between device
servers and task managers and a service delivery subsystem through which requests, indications, responses,
and confirmations are routed. See 4.6.6.
3.1.106 SCSI transport protocol layer (STPL): The protocol and services used by a SAL (see 3.1.95) to
transport data representing a SCSI application protocol transaction.
3.1.107 SCSI transport protocol service confirmation: A procedure call from the STPL notifying the SAL that
a SCSI transport protocol service request has completed.
3.1.108 SCSI transport protocol service indication: A procedure call from the STPL notifying the SAL that a
SCSI transport protocol transaction has occurred.
3.1.109 SCSI transport protocol service request: A procedure call to the STPL to begin a SCSI transport
protocol service transaction.
3.1.110 SCSI transport protocol service response: A procedure call to the STPL containing a reply from the
SAL in response to a SCSI transport protocol service indication.
3.1.111 SCSI transport protocol specific: Implementation of the referenced item is defined by a SCSI
transport protocol standard (see 2).
3.1.113 sense data: Data describing an error or exceptional condition that a device server delivers to an appli-
cation client in the same I_T_L_Q nexus transaction as the status or as parameter data in response to a
REQUEST SENSE command (see SPC-4).Fields in the sense data are referenced by name in this standard.
See SPC-4 for a complete sense data format definition.
3.1.114 sense key: The SENSE KEY field in the sense data (see 3.1.113 and SPC-4).
3.1.116 service: Any operation or function performed by a SCSI object that is invoked by other SCSI objects.
3.1.117 service delivery failure: Any non-recoverable error causing the corruption or loss of one or more
service delivery transactions while in transit.
3.1.118 service delivery subsystem: A class whose objects are, or an object that is, part of a SCSI I/O system
that transmits service requests to a logical unit or SCSI target device and returns logical unit or SCSI target
device responses to a SCSI initiator device. See 4.6.3.
3.1.119 service delivery transaction: A request or response sent through a service delivery subsystem.
3.1.120 standard INQUIRY data: Data returned to an application client as a result of an INQUIRY command
(see SPC-4) with the EVPD bit set to zero. Fields in the standard INQUIRY data are referenced by name in this
standard.
3.1.121 target port identifier: A value by which a SCSI target port is referenced within a domain. See 4.6.6.
3.1.122 target port name: A name (see 3.1.71) of a SCSI target port that is world wide unique within the SCSI
transport protocol of the SCSI domain of that SCSI target port (see 4.6.5). The name may be made available to
other SCSI devices or SCSI ports in that SCSI domain in SCSI transport protocol specific ways. See 4.6.6.
3.1.123 task: Synonymous with command (see 3.1.17 and Annex C).
3.1.124 task attribute: An attribute of a command (see 3.1.17) that specifies the processing relationship of a
command with regard to other commands in the task set (see 3.1.130). See 8.6.
3.1.125 task management function: A task manager service capable of being requested by an application
client to affect the processing of one or more commands. See clause 7.
3.1.126 task management request: A request submitted by an application client, invoking a task management
function to be processed by a task manager.
3.1.127 task management response: The response returned to an application client by a task manager on
completion of a task management request.
3.1.128 task manager: A class whose objects control, or an object that controls the sequencing of commands
and processes task management functions. See 4.6.22.
3.1.129 task router: A class whose objects route, or an object that routes commands and task management
functions between a service delivery subsystem (see 3.1.118) and the appropriate task manager(s). See 4.6.8.
3.1.130 task set: A class whose objects are, or an object that is, a group of commands within a logical unit,
whose interaction is dependent on the task management (e.g., queuing) and ACA requirements. See 4.6.23.
3.1.131 task tag: A term used by previous versions of this standard (see Annex C). See 3.1.19.
3.1.132 transaction: A cooperative interaction between two entities, involving the exchange of information or
the processing of some request by one entity on behalf of the other.
3.1.133 unconfirmed SCSI transport protocol service: A service available at the SCSI transport protocol
service interface that does not result in a completion confirmation. See 4.10.
3.1.134 well known logical unit: A class whose objects are each, or an object that is, a logical unit that only
performs specific functions. Well known logical units allow an application client to issue requests to receive and
manage specific information relating to a SCSI target device. See 4.6.26.
3.1.135 well known logical unit number (W-LUN): The LUN that identifies a well known logical unit. See
4.7.11.
3.2 Acronyms
ACA Auto Contingent Allegiance (see 3.1.8)
ADC-2 Automation/Drive Interface - Commands - 2 (see 2)
ADT-2 Automation/Drive Interface Transport Protocol - 2 (see 2)
CDB Command Descriptor Block (see 3.1.18)
CRN Command Reference Number
3.3 Keywords
3.3.1 invalid: A keyword used to describe an illegal or unsupported bit, byte, word, field or code value. Receipt
by a device server of an invalid bit, byte, word, field or code value shall be reported as error.
3.3.2 mandatory: A keyword indicating an item that is required to be implemented as defined in this standard.
3.3.3 may: A keyword that indicates flexibility of choice with no implied preference. May is synonymous with the
phrase "may or may not".
3.3.4 may not: A keyword that indicates flexibility of choice with no implied preference. May not is synonymous
with the phrase "may or may not".
3.3.5 obsolete: A keyword indicating that an item was defined in prior SCSI standards but has been removed
from this standard.
3.3.6 option, optional: Keywords that describe features that are not required to be implemented by this
standard. However, if any optional feature defined by this standard is implemented, then it shall be implemented
as defined in this standard.
3.3.7 prohibited: A keyword used to describe a feature, function, or coded value that is defined in a a non-SCSI
standard (i.e., a standard that is not a member of the SCSI family of standards) to which this standard makes a
normative reference where the use of said feature, function, or coded value is not allowed for implementations of
this standard.
3.3.8 reserved: A keyword referring to bits, bytes, words, fields, and code values that are set aside for future
standardization. A reserved bit, byte, word, or field shall be set to zero, or in accordance with a future extension
to this standard. Recipients are not required to check reserved bits, bytes, words, or fields for zero values.
Receipt of reserved code values in defined fields shall be reported as an error.
3.3.9 restricted: A keyword referring to bits, bytes, words, and fields that are set aside for other identified
standardization purposes. A restricted bit, byte, word, or field shall be treated as a reserved bit, byte, word or
field in the context where the restricted designation appears.
3.3.10 shall: A keyword indicating a mandatory requirement. Designers are required to implement all such
mandatory requirements to ensure interoperability with other products that conform to this standard.
3.3.11 should: A keyword indicating flexibility of choice with a strongly preferred alternative. Equivalent to the
phrase "it is strongly recommended".
3.3.12 vendor specific: Specification of the referenced item is determined by the SCSI device vendor.
Names of procedure calls are identified by a name in bold type, such as Execute Command (see clause 5).
Names of arguments are denoted by capitalizing each word in the name. For instance, Sense Data is the name
of an argument in the Execute Command procedure call.
Quantities having a defined numeric value are identified by large capital letters. CHECK CONDITION, for
example, refers to the numeric quantity defined in table 33 (see 5.3.1). Quantities having a discrete but
unspecified value are identified using small capital letters. As an example, COMMAND COMPLETE, indicates a
quantity returned by the Execute Command procedure call (see clause 5). Such quantities are associated with
an event or indication whose observable behavior or value is specific to a given implementation standard.
Lists sequenced by lowercase or uppercase letters show no ordering relationship between the listed items.
EXAMPLE 1 - The following list shows no relationship between the colors named:
EXAMPLE 2 - The following list shows an ordered relationship between the named items:
1) top;
2) middle; and
3) bottom.
If a conflict arises between text, tables, or figures, the order of precedence to resolve the conflicts is text; then
tables; and finally figures. Not all tables or figures are fully described in the text. Tables show data format and
values.
Notes do not constitute any requirements for implementors and notes are numbered consecutively throughout
this standard.
A decimal number is represented in this standard by any sequence of digits consisting of only the
Western-Arabic numerals 0 through 9 not immediately followed by a lower-case b or lower-case h (e.g., 25).
This standard uses the following conventions for representing decimal numbers:
a) the decimal separator (i.e., separating the integer and fractional portions of the number) is a period;
b) the thousands separator (i.e., separating groups of three digits in a portion of the number) is a space;
c) the thousands separator is used in both the integer portion and the fraction portion of a number; and
d) the decimal representation for a year is 1999 not 1 999.
Table 1 shows some examples of decimal numbers using various conventions.
Notation Description
The presence of the curly brackets (i.e. {}) defines constraint that is a
{Constraint text}
normative requirement. An example of a constraint is shown in figure 2.
Notation Description
Class Name
A class with operations and no
Operation01() attributes.
Operation02()
Class Name
Attribute01[1]
A class with attributes and
Attribute02[1]
operations.
Operation01()
Operation02()
Class Name
Attribute01[1..*] A class with attributes that have a
Attribute02[1] specified multiplicity (see table 4)
Operation01() and operations.
Operation02()
Notation Description
not
The number of instances of an attribute is not specified.
specified
x, n..m Multiple disjoint instances of the class or attribute exist (e.g., 2, 8..15).
a
See figure 1 and figure 2 for examples of multiplicity notation.
Table 5 shows the notation used to denote association (i.e., “knows about”) relationships between classes.
Unless the two classes in an association relationship also have an aggregation relationship, association
relationships have multiplicity notation (see table 4) at each end of the relationship line.
Notation Description
association_name
Class A Class B Class A knows about Class B (i.e., read as “Class
A association_name Class B”) and Class B
1..* 0..1
knows about Class A (i.e., read as “Class B
association name Class A”).
Multiplicity notation
Note - The use of role names and association names are optional.
Class A Class C
Class D
Attribute 01[1] Attribute 01[1]
Attribute aa[1]
Attribute 02[1] Attribute 02[1]
1 0..1
Operation 1()
Table 6 shows the notation used to denote aggregation (i.e., “is a part of” or “contains”) relationships between
classes. The aggregation relationship is a specific type of association and always include multiplicity notation
(see table 4) at each end of the relationship line.
Notation Description
Whole Part
The Part class is part of the Whole class and may
0..* 0..*
continue to exist even if the Whole class is removed
(i.e, read as “the whole contains the part”).
Multiplicity notation
Table 7 shows the notation used to denote generalization (i.e., “is a kind of”) relationships between classes.
Notation Description
Subclass A Subclass B
Attribute 03[1] Attribute 04[1]
Superclass
Attribute 01[1]
Attribute 02[1] There is no significance to
generalizations that are
combined or not combined.
Table 8 shows the notation used to denote dependency (i.e., “depends on”) relationships between classes.
Notation Description
Dependent Independent
Notation Description
: Class Name
Attribute01 = x Notation for a anonymous object with attributes.
Attribute02 = y
Table 10 shows the notation used to denote link relationships between objects.
Notation Description
: Class A : Class Aa
Attribute 01 = round Attribute 01 = true
Attribute 02 = red Attribute 02 = 55902
S0:S1
Transition from S0 to S1
S1:S0
S0:S0 Transition from S1 to S0
Transition from S0 to itself
Transition labels
The state diagram is followed by a list of the state transitions using the transition labels. Each transition is
described in the list with particular attention to the conditions that cause the transition to occur and special
conditions related to the transition. Using figure 6 as an example, the transition list read as follows:
Transition S0:S1: This transition occurs when state S0 is exited and state S1 is entered.
Transition S1:S0: This transition occurs when state S1 is exited and state S0 is entered.
Transition S0:S0: This transition occurs when state S0 transitions to itself. The reason for a transition from S0 to
itself is to specify that the actions taken whenever state S0 is entered are repeated every time the transition
occurs.
A system specified in this manner has the following properties:
a) time elapses only within discrete states;
b) state transitions are instantaneous; and
c) every time a state is entered, the actions of that state are started. Note that this means that a transition
that points back to the same state restarts the actions from the beginning.
4.1 Introduction
The purpose of the SCSI architecture model is to:
a) provide a basis for the coordination of SCSI standards development that allows each standard to be
placed into perspective within the overall SCSI architecture model;
b) establish a layered model in which standards may be developed;
c) provide a common reference for maintaining consistency among related standards; and
d) provide the foundation for application compatibility across all SCSI interconnect and SCSI transport
protocol environments by specifying generic requirements that apply uniformly to all implementation
standards within each functional area.
The development of this standard is assisted by the use of an abstract model. To specify the external behavior of
a SCSI system, elements in a system are replaced by functionally equivalent components within this model. Only
externally observable behavior is retained as the standard of behavior. The description of internal behavior in this
standard is provided only to support the definition of the observable aspects of the model. Those aspects are
limited to the generic properties and characteristics needed for host applications to interoperate with SCSI
devices in any SCSI interconnect and SCSI transport protocol environment. The model does not address other
requirements that may be essential to some I/O system implementations (e.g., the mapping from SCSI device
addresses to network addresses, the procedure for discovering SCSI devices on a network, and the definition of
network authentication policies for SCSI initiator devices or SCSI target devices). These considerations are
outside the scope of this standard.
The set of SCSI standards specifies the interfaces, functions, and operations necessary to ensure
interoperability between conforming SCSI implementations. This standard is a functional description. Conforming
implementations may employ any design technique that does not violate interoperability.
The SCSI architecture model is described in terms of classes (see 3.1.13), protocol layers, and service interfaces
between classes. As used in this standard, classes are abstractions, encapsulating a set of related functions
(i.e., attributes), operations, data types, and other classes. Certain classes are defined by SCSI (e.g., an
interconnect), while others are needed to understand the functioning of SCSI but have implementation definitions
outside the scope of SCSI (e.g., a command). These classes exhibit well-defined and observable behaviors, but
they do not exist as separate physical elements. A class may contain a single attribute or be a complex entity that
may:
a) contain multiple attributes; or
b) perform a set of operations or services on behalf of another class.
Service interfaces are defined between distributed classes and protocol layers. The template for a distributed
service interface is the client-server model described in 4.3. The structure of a SCSI I/O system is specified in 4.5
by defining the relationship among classes. The set of distributed services to be provided are specified in clause
5 and clause 7.
Requirements that apply to each SCSI transport protocol standard are specified in the SCSI transport protocol
service model described in 5.4, 6.4, and 7.12. The model describes required behavior in terms of layers, classes
within layers and SCSI transport protocol service transactions between layers.
requirements defined in this standard and the appropriate SCSI implementation standards. In the event of a
conflict between this document and other SCSI standards under the jurisdiction of technical committee T10, the
requirements of this standard shall apply.
.
Key:
Generic Implementation
Requirements Requirements SCSI
Implementation
Server Response
Protocol Service
Interface
SCSI SCSI
Initiator Target
Port Port
A client-server transaction is represented as a procedure call with inputs supplied by the caller (i.e., the client).
The procedure call is processed by the server and returns outputs and a procedure call status. A client directs
requests to a remote server via the SCSI initiator port and service delivery subsystem and receives a completion
response or a failure notification. The request identifies the server and the service to be performed and includes
the input data. The response conveys the output data and request status. A failure notification indicates that a
condition has been detected (e.g., a reset or service delivery failure) that precludes request completion.
As seen by the client, a request becomes pending when it is passed to the SCSI initiator port for transmission.
The request is complete when the server response is received or when a failure notification is sent. As seen by
the server, the request becomes pending upon receipt and completes when the response is passed to the SCSI
target port for return to the client. As a result there may be a time skew between the server and client's
perception of request status and server state.
Client-server relationships are not symmetrical. A client only originate requests for service. A server only respond
to such requests.
The client requests an operation provided by a server located in another SCSI device and waits for completion,
which includes transmission of the request to and response from the remote server. From the client's point of
view, the behavior of a service requested from another SCSI device is indistinguishable from a request
processed in the same SCSI device. In this model, confirmation of successful request or response delivery by
the sender is not required. The model assumes that delivery failures are detected by the SCSI initiator port or
within a service delivery subsystem.
Logical
Unit
Application Device Service Request
Device
Client Device Service Response Server
SCSI SCSI
Initiator Device Target Device
All requests originate from application clients residing within a SCSI initiator device. An application client is
independent of the interconnect and SCSI transport protocol (e.g., an application client may correspond to the
device driver and any other code within the operating system that is capable of managing I/O requests without
requiring knowledge of the interconnect or SCSI transport protocol).
As described in 4.3, each request takes the form of a procedure call with arguments and a status to be returned.
An application client may request processing of a command or a task management function through a request
directed to the device server within a logical unit. Device service requests are used to request the processing of
commands (see clause 5) and task manager requests are used to request the processing of task management
functions (see clause 7).
I/O System
SCSI Domain
SCSI Domain
1 1..*
1 1..*
1 1 1
0..1 1..* 0..1
1 1 1 1 1 1
1
1
1..* 1..* 0..1 0..1 1..* 1..*
Logical Unit SCSI Target Port SCSI Initiator Port Application Client
1..*
routes to
1 1 1 1..* 1..*
1
1
routes to
Task Router
1..*
Device Server
1
1 0..1
SCSI Domain
1 1..*
1..*
SCSI Device
1
1
1..*
1 2..*
Each instance of a SCSI Domain class shall contain the following objects:
a) one service delivery subsystem;
b) one or more SCSI devices; and
c) one or more SCSI ports.
See figure 13 for the instantiation of the minimum set of objects that make up a valid SCSI domain.
: SCSI Domain
The boundaries of a SCSI domain are established by the system implementor, within the constraints of a specific
SCSI transport protocol and associated interconnect standards.
several interactions with its STPL, the SCSI architecture model portrays each operation, from the viewpoint of
the application client, as occurring in one discrete step. The request or response is:
a) considered sent by the sender when the sender passes it to the SCSI port for transmission;
b) in transit until delivered; and
c) considered received by the receiver when it has been forwarded to the receiver via the destination SCSI
device's SCSI port.
SCSI Device
SCSI Device Name[0..*]
1 1 1
The SCSI device name for a SCSI target device may be reported in the Device Identification VPD pages
designation descriptor for SCSI target devices (see SPC-4). The SCSI device name for a SCSI initiator device is
reported by methods outside the scope of this standard.
SCSI Port
Relative Port Identifier[0..1]
1 1
1
1
Task Router
Route commands()
Route task management functions()
target device may assign relative port identifiers to its SCSI target ports and any SCSI initiator ports. If relative
port identifiers are assigned, the SCSI target device shall assign each of its SCSI target ports and any SCSI
initiator ports a unique relative port identifier from 1 to 65 535. SCSI target ports and SCSI initiator ports share
the same number space.
The Device Identification VPD page (see SPC-4) and the SCSI Ports VPD page (see SPC-4) report relative port
identifiers.
The relative port identifiers are not required to be contiguous. The relative port identifier for a SCSI port shall not
change once assigned unless physical reconfiguration of the SCSI target device occurs.
1
1..*
Application Client
1 1
Puts application client commands into
1 0..*
Each instance of a SCSI Initiator Device class shall contain the following objects:
a) one or more application clients that contain:
A) zero or more application client task management functions; and
B) one application client task set.
The SCSI Initiator Device class is associated with the SCSI Initiator Port class (see figure 13).
1
1
1 1
0..*
{Each instance of a Level 1
Hierarchical Logical Unit
Logical Unit
class shall contain at least
one logical unit or at least
one well know logical unit}
0..*
Each instance of the SCSI Target Device class shall contain the following objects:
a) one level 1 hierarchical logical unit that contains:
A) at least one logical unit or well known logical unit;
B) zero or more logical units; and
C) zero or more well known logical units.
The SCSI Target Device class is associated with the SCSI Target Port class (see figure 13).
1
1 0..* 1
1
0..1 0..* 0..1
1
0..1 0..* 0..1
0..1 0..1
Logical Unit
0..*
Each instance of a Level 1 Hierarchical Logical Unit class shall contain the following objects:
a) at least one logical unit or well known logical unit;
b) zero or more logical units;
a) zero or more well known logical units;
b) zero or more level 2 hierarchical logical units;
c) zero or more level 3 hierarchical logical units; or
d) zero or more level 4 hierarchical logical units.
Logical units and well known logical units at each level in the hierarchical logical unit structure are referenced by
one of the following address methods:
a) peripheral device address method (see 4.7.7);
b) flat space addressing method (see 4.7.8);
c) logical unit address method (see 4.7.9); or
d) extended logical unit addressing method (see 4.7.10).
All peripheral device addresses, except LUN 0 (see 4.7.4), default to vendor specific values. All addressable
entities, except well known logical units (see 4.6.26), may default to vendor specific values or may be defined by
an application client (e.g., by the use of SCC-2 configuration commands).
Within the hierarchical logical unit structure there may be SCSI devices each of which contain a SCSI target
device that:
a) has multiple logical units that are accessible through SCSI target ports in one SCSI domain; and
b) transfer SCSI operations to a SCSI target device in another SCSI domain through a SCSI initiator device
and its associated SCSI initiator ports.
When using the peripheral device addressing method or the logical unit address method the SCSI domains
accessed by these SCSI initiator ports are referred to as buses. A SCSI target device that has SCSI devices
attached to these buses shall assign numbers, other than zero, to those buses. The bus numbers shall be used
as components of the LUNs to the logical units attached to those buses, as described in 4.7.7 and 4.7.9.
When using the peripheral device addressing method or the logical unit address method SCSI devices shall
assign a bus number of zero to all the logical units within the SCSI target device that are not connected to
another SCSI domain.
All logical units and well known logical units contained within level 4 hierarchical logical unit shall have a
Dependent Logical Unit attribute (see [Link]).
Logical Unit
LUN[1..*]
Logical Unit Name[0..*]
Dependent Logical Unit[0..1]
1 1 1
1 1
1 1 0..1
1
0..* 0..*
0..*
Each instance of a Logical Unit class shall contain the following objects:
a) one device server;
b) one task manager;
c) zero or one copy manager;
d) zero or more task management functions; and
e) one or more task sets.
The logical unit is the class to which commands are sent. One of the logical units within the SCSI target device
shall be accessed using the LUN zero or the REPORT LUNS well-known logical unit number.
If the logical unit inventory changes for any reason (e.g., completion of initialization, removal of a logical unit, or
creation of a logical unit), then the device server shall establish a unit attention condition (see 5.14) for the SCSI
initiator port associated with every I_T nexus, with the additional sense code set to REPORTED LUNS DATA
HAS CHANGED.
Data contained within a logical unit may be duplicated in whole or part on a different logical unit. The
synchronization of that data between multiple logical units is outside the scope of this standard.
NOTE 3 - A SCSI target device may have multiple SCSI device names if the SCSI target device supports
multiple SCSI transport protocols (see 4.6.14).
The name used to identify the well known logical unit is indicated in the Device Identification VPD pages
designation descriptor for SCSI target devices (see SPC-4).
4.7.1 Introduction
Subclause 4.7 defines the construction of LUNs to be used by SCSI target devices. Application clients should
use only those LUNs returned by a REPORT LUNS command. The task router shall respond to LUNs other than
those returned by a REPORT LUNS command (i.e., incorrect logical unit numbers) as specified in 5.11 and 7.12.
Table 11 — Single level LUN structure using peripheral device addressing method
Bit
7 6 5 4 3 2 1 0
Byte
1 TARGET OR LUN
2
Null second level LUN (0000h)
3
4
Null third level LUN (0000h)
5
6
Null fourth level LUN (0000h)
7
Byte 2 through byte 7 in an 8-byte single level LUN structure using the peripheral device addressing method shall
contain 00h (see table 11). The value in the TARGET OR LUN field shall address a single level logical unit and be
between 0 and 255, inclusive. A value of 00b in the ADDRESS METHOD field specifies peripheral device addressing
(see 4.7.6). A value of 00h in the BUS IDENTIFIER field specifies the current level (see 4.7.7).
Table 12 describes a single level subset of the format described in 4.7.6 for SCSI target devices that contain
16 384 or fewer logical units.
Table 12 — Single level LUN structure using flat space addressing method
Bit
7 6 5 4 3 2 1 0
Byte
2
Null second level LUN (0000h)
3
4
Null third level LUN (0000h)
5
6
Null fourth level LUN (0000h)
7
Byte 2 through byte 7 in an 8-byte single level LUN structure using the flat space addressing method shall
contain 00h (see table 12). The value in the FLAT SPACE LUN field shall be between 0 and 16 383, inclusive. A
value of 01b in the ADDRESS METHOD field specifies flat space addressing (see 4.7.8) at the current level.
Table 13 describes a single level subset of the format described in 4.7.6 for SCSI target devices that contain
more than 16 384 logical units.
Table 13 — Single level LUN structure using extended flat space addressing method
Bit
7 6 5 4 3 2 1 0
Byte
1 (MSB)
EXTENDED FLAT SPACE ADDRESS
3 (LSB)
4
Null second level LUN (0000h)
5
6
Null third level LUN (0000h)
7
Byte 4 through byte 11 in an 12-byte single level LUN structure using the extended flat space addressing method
shall contain 00h (see table 13). The value in the EXTENDED FLAT SPACE ADDRESS field shall be between 0 and
16 777 215, inclusive. A value of 11b in the ADDRESS METHOD field with a value of 2h in the EXTENDED ADDRESS
METHOD field specifies extended flat space addressing (see 4.7.12) at the current level. A value of 01b in the
LENGTH field specifies that the LUN specified in the EXTENDED FLAT SPACE ADDRESS field is three bytes in length.
The presence of well-known logical units shall not affect the requirements defined within this subclause.
If a SCSI target device contains 256 or fewer logical units, none of which are dependent logical units (see
[Link]), then the SCSI target device’s LUNs:
a) should have the format shown in table 11 (i.e., peripheral device addressing);
b) may have the format shown in table 12 (i.e., flat space addressing); or
c) may have the format shown in table 13 (i.e., extended flat space addressing).
If a SCSI target device contains more than 256 logical units and 16 384 or fewer logical units, none of which are
dependent logical units (see [Link]), then the SCSI target device’s LUNs:
a) should have the format shown in table 12 (i.e., flat space addressing);
b) may have the format shown in table 13 (i.e., extended flat space addressing); or
c) may have the format shown in table 11 (i.e., peripheral device addressing) for up to 256 of the logical
units within SCSI target device.
If a SCSI target device contains more than 16 384 logical units, none of which are dependent logical units (see
[Link]), then the SCSI target device’s LUNs:
a) should have the format shown in table 13 (i.e., extended flat space addressing);
b) may have the format shown in table 12 (i.e., flat space addressing) for up to 16 384 of the logical units
within SCSI target device; or
c) may have the format shown in table 11 (i.e., peripheral device addressing) for up to 256 of the logical
units within SCSI target device.
Bytes 01234567
ABCDEFGH Level 1
CDEFGH00 Level 2
EFGH0000 Level 3
GH000000 Level 4
Byte position
Old New
The eight byte LUN structure requirements as viewed from the application client are shown in table 15.
Bit
7 6 5 4 3 2 1 0
Byte
0
FIRST LEVEL ADDRESSING (see table 16)
1
2
SECOND LEVEL ADDRESSING (see table 16)
3
4
THIRD LEVEL ADDRESSING (see table 16)
5
6
FOURTH LEVEL ADDRESSING (see table 16)
7
The FIRST LEVEL ADDRESSING field specifies the first level address of a SCSI target device. See table 16 for a
definition of the FIRST LEVEL ADDRESSING field.
The SECOND LEVEL ADDRESSING field specifies the second level address of a SCSI target device. See table 16 for
a definition of the SECOND LEVEL ADDRESSING field.
The THIRD LEVEL ADDRESSING field specifies the third level address of a SCSI target device. See table 16 for a
definition of the THIRD LEVEL ADDRESSING field.
The FOURTH LEVEL ADDRESSING field specifies the fourth level address of a SCSI target device. See table 16 for a
definition of the FOURTH LEVEL ADDRESSING field.
Bit
7 6 5 4 3 2 1 0
Byte
n ADDRESS METHOD
The ADDRESS METHOD field defines the contents of the ADDRESS METHOD SPECIFIC field. See table 17 for the
address methods defined for the ADDRESS METHOD field. The ADDRESS METHOD field only defines address
methods for entities that are directly addressable by an application client.
NOTE 4 - A SCSI device may filter (i.e., not relay) commands or task management functions to prevent
operations with deleterious effects from reaching a dependent logical unit (e.g., a WRITE command directed to a
logical unit that is participating in a RAID volume).
Bit
7 6 5 4 3 2 1 0
Byte
The BUS IDENTIFIER field identifies the bus or path that the SCSI device shall use to relay the received command
or task management function. The BUS IDENTIFIER field may use the same value encoding as the BUS NUMBER
field (see 4.7.9) with the most significant bits set to zero. However, if the BUS IDENTIFIER field is set to 00h, then
the command or task management function is to be relayed to a logical unit within the SCSI target device at the
current level.
The TARGET OR LUN field specifies the address of the peripheral device (e.g., a SCSI target device at the next
level) to which the SCSI device shall relay the received command or task management function. The meaning
and usage of the TARGET OR LUN field depends on whether the BUS IDENTIFIER field contains zero.
A BUS IDENTIFIER field of zero specifies a logical unit at the current level. This representation of a logical unit may
be used either when the SCSI target device at the current level does not use hierarchical addressing for
assigning LUNs to entities or when the SCSI target device at the current level includes entities that are assigned
LUNs but are not attached to SCSI buses. When the BUS IDENTIFIER field contains zero, the command or task
management function shall be relayed to the current level logical unit specified by the TARGET OR LUN field within
or joined to the current level SCSI device.
A BUS IDENTIFIER field greater than zero represents a SCSI domain that connects a group of SCSI target devices
to the current level SCSI device. Each SCSI domain shall be assigned a unique bus identifier number from 1 to
63. These bus identifiers shall be used in the BUS IDENTIFIER field when assigning addresses to peripheral
devices attached to the SCSI domains. When the BUS IDENTIFIER field is greater than zero, the command or task
management function shall be relayed to the logical unit within the SCSI target device specified in the TARGET OR
LUN field located in the SCSI domain specified by the BUS IDENTIFIER field with the LUN being set to the contents
of the received LUN shifted by two bytes as described in 4.7.6. The SCSI target device information in the TARGET
OR LUN field is a mapped representation of a target port identifier.
The SCSI target device located within the current level is addressed when the BUS IDENTIFIER field is set to zero
and the TARGET OR LUN field is set to zero, also known as LUN 0 (see 4.7.4).
Figure 21 shows the selection of a logical unit using the peripheral device addressing method.
SCSI domain
SCSI SCSI
domain SCSI ... domain SCSI
initiator port initiator port
SCSI
target
port
SCSI 00h
target
port
If BUS IDENTIFIER field > 00h, then the TARGET
OR LUN field specifies the bus (i.e.,SCSI
initiator port) through which the command is
... relayed with the LUN being set to the
SCSI contents of the received LUN shifted by two
target bytes as described in 4.7.6.
port
SCSI FFh
Target
port
Figure 21 — Logical unit selection using the peripheral device addressing format
Bit
7 6 5 4 3 2 1 0
Byte
The FLAT SPACE LUN field specifies the current level logical unit.
NOTE 5 - A SCSI device may filter (i.e., not relay) commands or task management functions to prevent
operations with deleterious effects from reaching a dependent logical unit (e.g., a WRITE command directed to a
logical unit that is participating in a RAID volume).
The contents of all hierarchical structure addressing fields following a logical unit addressing method addressing
field shall be ignored.
Bit
7 6 5 4 3 2 1 0
Byte
The TARGET field, BUS NUMBER field, and LUN field address the logical unit to which the received command or task
management function shall be relayed. The command or task management function shall be relayed to the
logical unit specified by the LUN field within the SCSI target device specified by the TARGET field located on the
bus specified by the BUS NUMBER field. The value in the LUN field shall be placed in the least significant bits of the
TARGET OR LUN field in a single level LUN structure for LUNs 255 and below (see 4.7.5). The TARGET field
contains a mapped representation of a target port identifier.
Figure 22 shows the selection of a logical unit using the logical unit addressing method.
SCSI domain
SCSI SCSI
domain SCSI ... domain SCSI
initiator port initiator port
SCSI
LUN Logical target
00h unit port
SCSI 00h If BUS IDENTIFIER field > 000b, then the BUS
... target IDENTIFIER field specifies the SCSI domain
port
LUN Logical and the TARGET field specifies the SCSI target
1Fh unit port to which the command is relayed with the
LUN formatted as a single level LUN
... structure (see 4.7.5) as follows:
SCSI
LUN Logical target a) ADDRESS METHOD field = 00b;
00h unit port b) BUS IDENTIFIER field = 00h; and
SCSI 3Fh
... target
c) TARGET OR LUN field = received LUN
port field contents.
LUN Logical
1Fh unit
Figure 22 — Logical unit selection using the logical unit addressing format
Bit
7 6 5 4 3 2 1 0
Byte
n+1 (MSB)
EXTENDED ADDRESS METHOD SPECIFIC
m (LSB)
The LENGTH field (see table 22) specifies the length of the EXTENDED ADDRESS METHOD SPECIFIC field. A LUN that
includes a LENGTH field value that goes beyond the LUN field length supported by the transport protocol is invalid
and shall follow the rules for addressing an incorrect logical unit described in 5.11.
Size in bytes of
00b 1 2 table 23
01b 3 4 table 24
10b 5 6 table 25
11b 7 8 table 26
Table 23, table 24, table 25, and table 26 show the four extended logical unit addressing formats.
Bit
7 6 5 4 3 2 1 0
Byte
Bit
7 6 5 4 3 2 1 0
Byte
n+1
EXTENDED ADDRESS METHOD SPECIFIC
n+3
Bit
7 6 5 4 3 2 1 0
Byte
n+1
EXTENDED ADDRESS METHOD SPECIFIC
n+5
Bit
7 6 5 4 3 2 1 0
Byte
1
EXTENDED ADDRESS METHOD SPECIFIC
7
The EXTENDED ADDRESS METHOD field combined with the LENGTH field (see table 27) specifies the type and size of
extended logical unit address found in the EXTENDED ADDRESS METHOD SPECIFIC field.
EXTENDED
LENGTH
ADDRESS METHOD Description Reference
Code(s)
Code(s)
Bit
7 6 5 4 3 2 1 0
Byte
n+1 W-LUN
The W-LUN field specifies the well known logical unit to be addressed (see SPC-4).
Bit
7 6 5 4 3 2 1 0
Byte
n+1 (MSB)
EXTENDED FLAT SPACE LUN
n+3 (LSB)
The EXTENDED FLAT SPACE LUN field specifies a current level logical unit.
Bit
7 6 5 4 3 2 1 0
Byte
1 FFh
2
Ignore
7
4.8 Nexus
Table 31 — Nexus
SCSI Port SCSI Port SCSI Port SCSI Port SCSI Port
SCSI Initiator Port
SCSI Device
SCSI Target Device SCSI Port
SCSI Target
Port Service
Task Delivery
Router Subsystem
Two-way communications shall be possible between all logical units and all SCSI target ports in a SCSI device.
However, communications between any logical unit and any SCSI target port in a SCSI device may be inactive.
Two-way communications shall be available between each task manager and all task routers in the SCSI target
ports in the SCSI device. Each SCSI target port in a SCSI device shall accept commands sent to LUN 0 or the
REPORT LUNS well-known logical unit, and the task router in that SCSI target port shall route the commands to
a device server in a logical unit in the SCSI device for processing. REPORT LUNS commands (see SPC-4) shall
be accepted by the logical unit with the LUN zero or the REPORT LUNS well-known logical unit from any SCSI
target port in the SCSI device, and the logical unit shall return the logical unit inventory available via that SCSI
target port. An application client determines the availability of the same logical unit through multiple SCSI target
ports in a SCSI device by matching logical unit name values in the Device Identification VPD page (see SPC-4).
SCSI Device
SCSI Port
SCSI SCSI Initiator Device
Service Initiator Port
Delivery
Subsystem
SCSI Port
SCSI
Service Initiator Port
Delivery
Subsystem
Two-way communications shall be possible between an application client and its associated SCSI initiator port.
This standard does not specify or require the definition of any mechanisms by which a SCSI target device would
have the ability to discover that it is communicating with multiple ports on a single SCSI initiator device. In those
SCSI transport protocols where such mechanisms are defined, they shall not have any effect on how commands
are processed (e.g., reservations shall be handled as if no such mechanisms exist).
SCSI Device
SCSI Port
Service
SCSI Target Device
Delivery
SCSI Target Port Subsystem
Task
Logical Router
Unit
Device
SCSI Port
Server
SCSI Target Port
Service
Task Task Delivery
Manager Router Subsystem
SCSI Initiator Port
Two-way communications shall be possible between all logical units and all SCSI target ports in a SCSI device.
However, communications between any logical unit and any SCSI target port in a SCSI device may be inactive.
Two-way communications shall be available between each task manager and all task routers in the SCSI target
ports in the SCSI device. Each SCSI target port in a SCSI device shall accept commands sent to LUN 0 or the
REPORT LUNS well-known logical unit, and the task router in that SCSI target port shall route the commands to
a device server in a logical unit in the SCSI device for processing. REPORT LUNS commands (see SPC-4) shall
be accepted by the logical unit with the LUN zero or the REPORT LUNS well-known logical unit from any SCSI
target port in the SCSI device, and the logical unit shall return the logical unit inventory available via that SCSI
target port. An application client determines the availability of the same logical unit through multiple SCSI target
ports in a SCSI device by matching logical unit name values in the Device Identification VPD page (see SPC-4).
This standard does not specify or require the definition of any mechanisms by which a SCSI target device would
have the ability to discover that it is communicating with multiple SCSI ports that also contain a SCSI initiator port
on a single SCSI device. In those SCSI transport protocols where such mechanisms are defined, they shall not
have any effect on how commands are processed (e.g., reservations shall be handled as if no such mechanisms
exist).
4.9.6 SCSI initiator device view of a multiple port SCSI target device
A SCSI target device may have SCSI target ports connected to different SCSI domains such that a SCSI initiator
port is only able to communicate with the logical units in the SCSI target device using the SCSI target ports in a
single SCSI domain. However, SCSI target devices with multiple SCSI ports may be configured where
application clients have the ability to discover that one or more logical units are accessible via multiple SCSI
target ports. Figure 27 and figure 28 show two examples of such configurations.
Figure 27 shows a SCSI target device with multiple SCSI ports each containing a SCSI target port participating in
a single SCSI domain with two SCSI initiator devices. There are three SCSI devices, one of which has two SCSI
target ports, and two of which have one SCSI initiator port each. There are two target port identifiers and two
initiator port identifiers in this SCSI domain. Using the INQUIRY command Device Identification VPD page (see
SPC-4), the application clients in each of the SCSI initiator devices have the ability to discover if the logical units
in the SCSI target devices are accessible via multiple SCSI target ports and map the configuration of the SCSI
target device.
SCSI Domain
SCSI device
SCSI device
SCSI target device
SCSI Port SCSI Port SCSI initiator device
SCSI Target
Port SCSI
Task Initiator Appli-
Router Port cation
Service Client
Logical Delivery
Unit Sub-
Device SCSI Port system
Server SCSI Target
Port
SCSI Appli-
Task Task Initiator
Router cation
Manager Port Client
SCSI Port SCSI initiator device
SCSI device
Figure 28 shows a SCSI target device with multiple SCSI ports each containing a SCSI target port participating in
two SCSI domains and a SCSI initiator device with multiple SCSI ports each containing a SCSI initiator port
participating in the same two SCSI domains. There is one SCSI target device with two SCSI target ports and one
SCSI initiator device with two SCSI initiator ports. There is one target port identifier and one initiator port identifier
in each of the two SCSI domains. Using the INQUIRY command Device Identification VPD page (see SPC-4),
the application clients in the SCSI initiator device have the ability to discover that logical units in the SCSI target
device are accessible via multiple SCSI initiator ports and multiple SCSI target ports and map the configuration.
However, application clients may not be able to distinguish between the configuration shown in figure 28 and the
configuration shown in figure 29.
SCSI Domain 1
Figure 29 shows the same configuration as figure 28 except that the two SCSI domains have been replaced by a
single SCSI domain.
SCSI Domain
SCSI device SCSI device
SCSI target device
SCSI Port
SCSI Target SCSI PortSCSI initiator device
Port
SCSI
Task
Initiator
Router
Port
Logical
Service
Unit Appli-
Delivery
Device SCSI Port cation
Sub-
Server SCSI Target Client
system
Port
SCSI
Task Task
Initiator
Manager Router
Port
SCSI Port
Figure 29 — SCSI target device and SCSI initiator device configured in a single SCSI domain
This model for application client determination of multiple SCSI target port configurations relies on information
that is available only to the application clients via commands.
4.9.7 SCSI target device view of a multiple port SCSI initiator device
This standard does not require a SCSI target device to be able to detect that a SCSI initiator device contains
more than one SCSI initiator port. In the cases where a SCSI target device does not detect that a SCSI initiator
device contains more than one SCSI initiator port, the SCSI target device interacts with the SCSI initiator device
as if each SCSI initiator port was contained in a separate SCSI initiator device (e.g., a SCSI target device
operates in the configurations shown in figure 28 and figure 29 in the same way it operates in the configuration
shown in figure 27).
NOTE 6 - The implications of this view of a SCSI initiator device are more far reaching than are immediately
apparent (e.g., after a SCSI initiator device makes a persistent exclusive access reservation via one SCSI
initiator port, access is denied to the other SCSI initiator port(s) on that same SCSI initiator device).
Interconnect
The layers in this model and the specifications defining the functionality of each layer are denoted by horizontal
sequences. A layer consists of peer entities that communicate with one another by means of a protocol. Except
for the interconnect layer, such communication is accomplished by invoking services provided by the adjacent
layer. The following layers are defined:
a) SAL: Clients and servers that originate and process SCSI I/O operations by means of a SCSI application
protocol;
b) STPL: Services and protocols through which clients and servers communicate; and
c) Interconnect layer: Services, signaling mechanism and interconnect subsystem used for the physical
transfer of data from sender to receiver. In the SCSI model, the interconnect layer is known as a service
delivery subsystem.
The set of SCSI transport protocol services implemented by a service delivery subsystem identify external
behavioral requirements that apply to SCSI transport protocol standards. While these SCSI transport protocol
services may serve as a guide for designing reusable software or firmware that is adaptable to different SCSI
transport protocols, there is no requirement for an implementation to provide the service interfaces specified in
this standard.
The SCSI transport protocol service interface is defined in this standard in representational terms using SCSI
transport protocol services. The SCSI transport protocol service interface implementation is defined in each
SCSI transport protocol standard. The interconnect service interface is described as appropriate in each SCSI
transport protocol standard.
Interactions between the SAL and STPL are defined with respect to the SAL and may originate in either layer. An
outgoing interaction is modeled as a procedure call invoking an STPL service. An incoming interaction is
modeled as a procedure call invoked by the STPL.
All procedure calls may be accompanied by parameters or data. Both types of interaction are described using the
notation for procedures specified in 3.6.2. In this standard, input arguments are defined relative to the layer
receiving an interaction (i.e., an input is a argument supplied to the receiving layer by the layer initiating the
interaction).
The following types of service interactions between layers are defined:
a) SCSI transport protocol service request procedure calls from the SAL invoking a service provided by the
STPL;
b) SCSI transport protocol service indication procedure calls from the STPL informing the SAL that an
asynchronous event has occurred (e.g., the receipt of a peer-to-peer protocol transaction);
c) SCSI transport protocol service response procedure calls to the STPL invoked by the SAL in response to
a SCSI transport protocol service indication. A SCSI transport protocol service response may be invoked
to return a reply from the invoking SAL to the peer SAL; and
d) SCSI transport protocol service confirmation procedure calls from the STPL notifying the SAL that a
SCSI transport protocol service request has completed, has been terminated, or has failed to transit the
interconnect layer. A confirmation may communicate parameters that indicate the completion status of
the SCSI transport protocol service request or any other status. A SCSI transport protocol service
confirmation may be used to convey a response from the peer SAL.
The services provided by an STPL are either confirmed or unconfirmed. A SAL service request invoking a
confirmed service always results in a confirmation from the STPL.
Figure 31 shows the relationships between the four SCSI transport protocol service types.
SAL
STPL
SCSI Transport
Protocol Service
Request
SCSI Transport
Protocol Service
Indication
SCSI Transport
Protocol Service
Response
SCSI Transport
Protocol Service
Confirmation
Figure 32 shows how SCSI transport protocol services may be used to process a client-server request-response
transaction at the SAL.
SAL
Client Server
Server Request
Server Response
STPL
The dashed lines in figure 32 show a SCSI application protocol transaction as it may appear to sending and
receiving entities within the client and server. The solid lines in figure 32 show the corresponding SCSI transport
protocol services and STPL transactions that are used to transport the data.
When a device server invokes a data transfer SCSI transport protocol service, the interactions required to
transfer the data do not involve the application client. Only the STPL in the SCSI device that also contains the
application client is involved. Figure 33 shows the relationships between the SCSI transport protocol service
types involved in a data transfer request.
SAL
STPL
SCSI Transport
Protocol Service
Request
SCSI Transport
Protocol Service
Confirmation
Figure 34 shows how SCSI transport protocol services may be used to process a device server data transfer
transaction.
SAL
Device
Server
STPL
Note: The dotted box represents a memory access function provided by the
SCSI initiator device whose definition is outside the scope of this standard.
Figure 34 — Device server data transfer transaction and related STPL services
When a device server invokes a Terminate Data Transfer SCSI transport protocol service, the interactions
required to complete the service do not involve the SCSI Transport Protocol Service Interface or the application
client. Only the STPL in the SCSI device that also contains the device server is involved. Figure 35 shows the
relationships between the SCSI transport protocol service types involved in a Terminate Data Transfer request.
SAL
STPL
SCSI Transport
Protocol Service
Request
SCSI Transport
Protocol Service
Confirmation
Figure 35 — SCSI transport protocol service model for Terminate Data Transfer
Figure 36 shows how SCSI transport protocol services may be used to process a device server Terminate Data
Transfer transaction.
.
SAL
Device
Server
STPL
SCSI Transport
Protocol Service
Request
SCSI Transport
Protocol Service
Confirmation
Figure 36 — Device server Terminate Data Transfer transaction and related STPL services
Service Response = Execute Command (IN ( I_T_L_Q Nexus, CDB, Task Attribute, [Data-In
Buffer Size], [Data-Out Buffer], [Data-Out Buffer Size], [CRN], [Command
Priority]), OUT ( [Data-In Buffer], [Sense Data], [Sense Data Length],
Status, [Status Qualifier] ))
Input arguments:
I_T_L_Q Nexus: The I_T_L_Q nexus identifying the command (see 4.8).
CDB: Command descriptor block (see 5.2).
Task Attribute: A value specifying one of the task attributes defined in 8.6.
Data-In Buffer Size: The number of bytes available for data transfers to the Data-In Buffer (see
5.4.3). SCSI transport protocols may interpret the Data-In Buffer Size to include
both the size and the location of the Data-In Buffer.
Data-Out Buffer: A buffer (see 5.4.3) containing command specific information to be sent to the
logical unit (e.g., data or parameter lists needed to process the command). The
buffer size is indicated by the Data-Out Buffer Size argument. The content of the
buffer shall not change during the lifetime of the command (see 5.5) as viewed
by the application client.
Data-Out Buffer Size: The number of bytes available for data transfers from the Data-Out Buffer (see
5.4.3).
CRN: When the CRN is used, all commands on an I_T_L nexus shall include a CRN
argument that is incremented by one. The CRN shall be set to one for each
I_T_L nexus involving the SCSI port after the SCSI port receives a hard reset or
detects I_T nexus loss. The CRN shall be set to one after it reaches the
maximum CRN value supported by the protocol. The CRN value zero shall be
reserved for use as defined by the SCSI transport protocol. It is not an error for
the application client to provide a CRN when CRN is not supported by the SCSI
transport protocol or logical unit. See the SCSI transport protocol standards for
rules regarding CRN checking.
Command Priority: The priority assigned to the command (see 8.7).
Output arguments:
Data-In Buffer: A buffer (see 5.4.3) to contain command specific information returned by the
logical unit by the time of command completion. The Execute Command
procedure call shall not return a GOOD status or CONDITION MET status
unless the buffer contents are valid. The application client shall treat the buffer
contents as invalid unless Execute Command procedure call returns a GOOD
status or CONDITION MET status. While some valid data may be present for
other values of status, the application client should rely on additional information
from the logical unit (e.g., sense data) to determine the state of the buffer
contents. If the command terminates with a service response of SERVICE
DELIVERY OR TARGET FAILURE, the application client shall consider the buffer to be
undefined.
Sense Data: A buffer containing sense data returned in the same I_T_L_Q nexus transaction
as status (see 5.13). The buffer length is indicated by the Sense Data Length
argument. If the command terminates with a service response of SERVICE
DELIVERY OR TARGET FAILURE, the application client shall consider the sense data
to be undefined.
Sense Data Length: The length in bytes of the Sense Data (see 5.13).
Status: A one-byte field containing command completion status (see 5.3). If the
command terminates with a service response of SERVICE DELIVERY OR TARGET
FAILURE, the application client shall consider command completion status to be
undefined.
Status Qualifier: Additional information about the indicated command completion status (see
5.3.2).
One of the following SCSI transport protocol specific service responses shall be returned:
COMMAND COMPLETE: A logical unit response indicating that the command has completed. The Status
argument shall have one of the values specified in 5.3.
SERVICE DELIVERY OR The command has been terminated due to a service delivery failure (see
TARGET FAILURE: 3.1.117) or SCSI target device malfunction. All output arguments are invalid.
The SCSI transport protocol events corresponding to a response of COMMAND COMPLETE or SERVICE DELIVERY OR
TARGET FAILURE shall be specified in each SCSI transport protocol standard.
Bit 7 6 5 4 3 2 1 0
All SCSI transport protocol standards shall define as mandatory the functionality needed for a logical unit to
implement the NACA bit.
The NACA (Normal ACA) bit specifies whether an auto contingent allegiance (ACA) is established if the command
terminates with CHECK CONDITION status. A NACA bit set to one specifies that an ACA shall be established. A
NACA bit set to zero specifies that an ACA shall not be established. The actions for ACA are specified in 5.9.
Actions that may be required when an ACA is not established are described in 5.8. All logical units shall
implement support for the NACA value of zero and may support the NACA value of one (i.e., ACA). The ability to
support a NACA value of one is indicated with the NORMACA bit in the standard INQUIRY data (see SPC-4).
If the NACA bit is set to one but the logical unit does not support ACA, the command shall be terminated with
CHECK CONDITION status, with the sense key set to ILLEGAL REQUEST, and the additional sense code set to
INVALID FIELD IN CDB.
5.3 Status
Command
Code Status Service response
completed
00h GOOD Yes COMMAND COMPLETE
02h CHECK CONDITION Yes COMMAND COMPLETE
04h CONDITION MET Yes COMMAND COMPLETE
08h BUSY Yes COMMAND COMPLETE
10h Obsolete
14h Obsolete
18h RESERVATION CONFLICT Yes COMMAND COMPLETE
22h Obsolete
28h TASK SET FULL Yes COMMAND COMPLETE
30h ACA ACTIVE Yes COMMAND COMPLETE
40h TASK ABORTED Yes COMMAND COMPLETE
All other codes Reserved
Sense data may be delivered in the buffer defined by the Sense Data argument of the Execute Command
procedure call (see 5.1) for any status code.
Definitions for each status code are as follows:
GOOD. This status indicates that the device server has completed the command without error.
CHECK CONDITION. This status indicates that sense data has been delivered in the buffer defined by the
Sense Data argument to the Execute Command procedure call (see 5.13). Additional actions that are required
when CHECK CONDITION status is returned are described in 5.8.
CONDITION MET. The use of this status is limited to commands for which it is specified (see the PRE-FETCH
commands in SBC-3).
BUSY. This status indicates that the logical unit is busy. This status shall be returned whenever a logical unit is
temporarily unable to accept a command. The recommended application client recovery action is to issue the
command again at a later time.
If the UA_INTLCK_CTRL field in the Control mode page contains 11b (see SPC-4), termination of a command with
BUSY status shall cause a unit attention condition to be established for the SCSI initiator port on the I_T nexus
that sent the command with an additional sense code set to PREVIOUS BUSY STATUS.
The status qualifier, when supported by a SCSI transport protocol, may provide the SCSI initiator port with more
information about when the command should be retransmitted (see 5.3.2).
RESERVATION CONFLICT. This status shall be returned whenever a command is sent by an application client
to a logical unit in a way that conflicts with an existing reservation. (See the PERSISTENT RESERVE OUT
command and PERSISTENT RESERVE IN command in SPC-4.)
If the UA_INTLCK_CTRL field in the Control mode page contains 11b (see SPC-4), termination of a command with
RESERVATION CONFLICT status shall cause a unit attention condition to be established for the SCSI initiator
port on the I_T nexus that sent the command with an additional sense code set to PREVIOUS RESERVATION
CONFLICT STATUS.
TASK SET FULL. When the logical unit has at least one command in the task set for an I_T nexus and a lack of
task set resources prevents the logical unit from accepting an additional command received from that I_T nexus
into the task set, TASK SET FULL status shall be returned. When the logical unit has no command in the task set
for an I_T nexus and a lack of task set resources prevents accepting a received command from that I_T nexus
into the task set, BUSY status should be returned.
The logical unit should allow at least one command in the task set for each supported I_T nexus (i.e., a logical
unit should allow at least one command into the task set for each I_T nexus that has been identified in a SCSI
transport protocol specific manner (e.g., a login), or by the successful reception of a command).
The status qualifier, when supported by a SCSI transport protocol, may provide the SCSI initiator port with more
information about when the command should be retransmitted (see 5.3.2).
If the UA_INTLCK_CTRL field in the Control mode page contains 11b (see SPC-4), termination of a command with
TASK SET FULL status shall cause a unit attention condition to be established for the SCSI initiator port on the
I_T nexus that sent the command with an additional sense code set to PREVIOUS TASK SET FULL STATUS.
ACA ACTIVE. This status shall be returned as described in 5.9.2 and 5.9.3 when an ACA exists within a task
set. The application client may reissue the command on the same I_T nexus after the ACA condition has been
cleared.
TASK ABORTED. This status shall be returned when a command is aborted by a command or task
management function on another I_T nexus and the Control mode page TAS bit is set to one (see 5.6).
Bit
7 6 5 4 3 2 1 0
Byte
0 SCOPE (MSB)
QUALIFIER
1 (LSB)
The SCOPE field (see table 35) indicates the logical unit(s) to which the status qualifier applies.
All logical units accessible by the SCSI target port through which the I_T nexus through with
01b
command associated with the status was routed. the status was returned.
All logical unit(s) contained within the SCSI device that contains the
10b All I_T nexus(es).
logical unit addressed by the command associated with the status.
11b Reserved
The QUALIFIER field (see table 36) indicates additional information about the reason for the status code.
The logical unit(s) indicated by the SCOPE field are not able to
3FFFh accept the command because they are servicing too many other
I_T nexuses.
CHECK
0001h - 3FFFh Reserved
CONDITION
RESERVATION
0001h - 3FFFh Reserved
CONFLICT
B) POWER ON OCCURRED;
C) SCSI BUS RESET OCCURRED;
D) MICROCODE HAS BEEN CHANGED;
E) BUS DEVICE RESET FUNCTION OCCURRED;
F) DEVICE INTERNAL RESET;
G) COMMANDS CLEARED BY POWER LOSS NOTIFICATION; or
H) I_T NEXUS LOSS OCCURRED;
3) a RESERVATION CONFLICT status;
and
4) a status of:
A) CHECK CONDITION, other than with a sense key set to ILLEGAL REQUEST or for any reason not
listed in 2);
B) GOOD;
C) CONDITION MET; or
D) TASK ABORTED.
NOTE 7 - The names of the unit attention conditions listed in this subclause (e.g., SCSI BUS RESET
OCCURRED) are based on usage in SAM-2. The use of these unit attention condition names is not to be
interpreted as a description of how the unit attention conditions are represented by any given SCSI transport
protocol.
A device server may report the following status codes with any level of precedence:
a) BUSY status;
b) TASK SET FULL status; or
c) CHECK CONDITION status with a sense key set to ILLEGAL REQUEST.
Any unit attention condition that was established for all logical units (e.g., REPORTED LUNS DATA HAS
CHANGED) should be reported with a higher precedence than a CHECK CONDITION status with a sense key
set to ILLEGAL REQUEST and an additional sense code set to LOGICAL UNIT NOT SUPPORTED.
5.4.1 Overview
The SCSI transport protocol services that support the Execute Command procedure call are described in 5.4.
The following groups of SCSI transport protocol services are described:
a) the SCSI transport protocol services that support the delivery of the command and status (see 5.4.2);
and
b) the SCSI transport protocol services that support the data transfers associated with processing a
command (see 5.4.3).
Send SCSI Command (IN ( I_T_L_Q Nexus, CDB, Task Attribute, [Data-In Buffer Size],
[Data-Out Buffer], [Data-Out Buffer Size], [CRN], [Command Priority], [First
Burst Enabled] ))
Input arguments:
I_T_L_Q Nexus: The I_T_L_Q nexus identifying the command (see 4.8).
CDB: Command descriptor block (see 5.2).
Task Attribute: A value specifying one of the task attributes defined in 8.6. For specific
requirements on the Task Attribute argument see 5.1.
Data-In Buffer Size: The number of bytes available for data transfers to the Data-In Buffer (see
5.4.3). SCSI transport protocols may interpret the Data-In Buffer Size to include
both the size and the location of the Data-In Buffer.
Data-Out Buffer: A buffer containing command specific information to be sent to the logical unit
(e.g., data or parameter lists needed to process the command (see 5.1)). The
content of the Data-Out Buffer shall not change during the lifetime of the
command (see 5.5) as viewed by the application client.
Data-Out Buffer Size: The number of bytes available for data transfers from the Data-Out Buffer (see
5.4.3).
CRN: When CRN is used, all commands on an I_T_L nexus include a CRN argument
(see 5.1).
Command Priority: The priority assigned to the command (see 8.7).
First Burst Enabled: An argument specifying that a SCSI transport protocol specific number of bytes
from the Data-Out Buffer shall be delivered to the logical unit without waiting for
the device server to invoke the Receive Data-Out SCSI transport protocol
service.
SCSI Command Received (IN ( I_T_L_Q Nexus, CDB, Task Attribute, [CRN], [Command Priority],
[First Burst Enabled] ))
Input arguments:
I_T_L_Q Nexus: The I_T_L_Q nexus identifying the command (see 4.8).
CDB: Command descriptor block (see 5.2).
Task Attribute: A value specifying one of the task attributes defined in 8.6. For specific
requirements on the Task Attribute argument see 5.1.
CRN: When a CRN argument is used, all commands on an I_T_L nexus include a
CRN argument (see 5.1).
Command Priority: The priority assigned to the command (see 8.7).
First Burst Enabled: An argument specifying that a SCSI transport protocol specific number of bytes
from the Data-Out Buffer are being delivered to the logical unit without waiting
for the device server to invoke the Receive Data-Out SCSI transport protocol
service.
Send Command Complete (IN ( I_T_L_Q Nexus, [Sense Data], [Sense Data Length], Status,
Service Response, [Status Qualifier] ))
Input arguments:
I_T_L_Q Nexus: The I_T_L_Q nexus identifying the command (see 4.8).
Sense Data: If present, a Sense Data argument instructs the SCSI target port to complete
with sense data to the SCSI initiator port (see 5.13).
Sense Data Length: The length in bytes of the sense data to be returned to the SCSI initiator port.
Status: Command completion status (see 5.1).
Service Response: Possible service response information for the command (see 5.1).
Status Qualifier: The Status Qualifier code for the command (see 5.3.2).
Command Complete Received (IN ( I_T_L_Q Nexus, [Data-In Buffer], [Sense Data], [Sense Data
Length], Status, Service Response, [Status Qualifier] ))
Input arguments:
I_T_L_Q Nexus: The I_T_L_Q nexus identifying the command (see 4.8).
Data-In Buffer: A buffer containing command specific information returned by the logical unit on
command completion (see 5.1).
Sense Data: Sense data returned in the same I_T_L_Q nexus transaction as status (see
5.13).
Sense Data Length: The length in bytes of the received sense data.
Status: Command completion status (see 5.1).
Service Response: Service response for the command (see 5.1).
Status Qualifier: The status qualifier for the command (see 5.3.2).
[Link] Introduction
The data transfer services described in 5.4.3 provide mechanisms for moving data to and from the SCSI initiator
port while processing commands. All SCSI transport protocol standards shall define the protocols required to
implement these services.
The application client's Data-In Buffer and/or Data-Out Buffer each appears to the device server as a single,
logically contiguous block of memory large enough to hold all the data required by the command (see figure 37).
This standard allows either unidirectional or bidirectional data transfer. The processing of a command may
require the transfer of data from the application client using the Data-Out Buffer, or to the application client using
the Data-In Buffer, or both to and from the application client using both the Data-In Buffer and the Data-Out
Buffer.
Application
Client
Byte Count Buffer Offset
Requested by
Device Server
Application
Client
Buffer Size
This standard assumes that the buffering resources available to a logical unit are limited, and the buffer in the
logical unit may not be capable of containing all of the data required to be transferred for one command. Such
data needs to be moved between the application client and the logical unit in segments that are smaller than the
transfer size specified in the command. The amount of data moved per segment is usually a function of the
buffering resources available to the logical unit. Figure 37 shows the model for such incremental data transfers.
SCSI transport protocols may allow logical units to accept the initial portion of the Data-Out Buffer data, called
the first burst, along with the command without waiting for the device server to invoke the Receive Data-Out
SCSI transport protocol service. This is modeled using Receive Data-Out protocol service calls for which the
SCSI transport protocol may have moved the first burst prior to the call.
SCSI transport protocols that define a first burst capability shall include the First Burst Enabled argument in their
definitions for the Send SCSI Command and SCSI Command Received SCSI transport protocol services.
Logical units that implement the first burst capability shall implement the FIRST BURST SIZE field in the
Disconnect-Reconnect mode page (see SPC-4).
The STPL confirmed services specified in [Link] and [Link] are used by the device server to request the
transfer of data to or from the application client Data-In Buffer or Data-Out Buffer, respectively. The SCSI initiator
device SCSI transport protocol service interactions for data transfers are unspecified.
The movement of data between the application client and device server is controlled by the following arguments:
Application Client Buffer The total number of bytes in the application client's buffer (i.e., equivalent to
Size: Data-In Buffer Size for the Data-In Buffer or equivalent to Data-Out Buffer Size
for the Data-Out Buffer).
Application Client Buffer Offset in bytes from the beginning of the application client's buffer (Data-In or
Offset: Data-Out) to the first byte of transferred data.
Byte Count Requested by
Number of bytes to be moved by the data transfer request.
Device Server:
For any specific data transfer SCSI transport protocol service request, the Byte Count Requested by Device
Server is less than or equal to the combination of Application Client Buffer Size minus the Application Client
Buffer Offset.
Random buffer access occurs when the device server requests data transfers to or from segments of the
application client's buffer that have an arbitrary offset and byte count. Buffer access is sequential when
successive transfers access a series of increasing, adjoining buffer segments. Support for random buffer access
by a SCSI transport protocol standard is optional. A device server implementation designed for any SCSI
transport protocol implementation should be prepared to use sequential buffer access when necessary.
If a SCSI transport protocol supports random buffer access, the offset and byte count specified for each data
segment to be transferred may overlap. In this case the total number of bytes moved for a command is not a
reliable indicator of highest byte transferred and shall not be used by a SCSI initiator device or SCSI target
device implementation to determine whether all data has been transferred.
All SCSI transport protocol standards shall define support for a resolution of one byte for the Application Client
Buffer Size argument.
SCSI transport protocol standards may define restrictions on the resolution of the Application Client Buffer Offset
argument. SCSI transport protocol standards may define restrictions on the resolution of the Request Byte Count
argument for any call to Send Data-In or any call to Receive Data-Out that does not transfer the last byte of the
Application Client Buffer.
This standard provides only for the transfer phases to be sequential. Provision for overlapping transfer phases is
outside the scope of this standard.
The STPL confirmed services specified in [Link] are used by the task manager or device server to terminate
partially completed transfers to the Data-In Buffer or from the Data-Out Buffer. The Terminate Data Transfer
SCSI transport protocol service requests that one or more Send Data-In or Receive Data-Out SCSI transport
protocol service requests be terminated by a SCSI target port.
Input arguments:
I_T_L_Q Nexus: The I_T_L_Q nexus identifying the command (see 4.8).
Device Server Buffer: The buffer in the device server from which data is to be transferred.
Application Client Buffer Offset in bytes from the beginning of the application client's buffer (i.e., the
Offset: Data-In Buffer) to the first byte of transferred data.
Request Byte Count: Number of bytes to be moved by this request.
This confirmation notifies the device server that the specified data was successfully delivered to the application
client buffer, or that a service delivery subsystem error occurred while attempting to deliver the data.
Input arguments:
I_T_L_Q Nexus: The I_T_L_Q nexus identifying the command (see 4.8).
Delivery Result: an encoded value representing one of the following:
DELIVERY SUCCESSFUL: The data was delivered successfully.
DELIVERY FAILURE: A service delivery subsystem error occurred while
attempting to deliver the data.
Receive Data-Out (IN ( I_T_L_Q Nexus, Application Client Buffer Offset, Request Byte Count,
Device Server Buffer ))
Input arguments:
I_T_L_Q Nexus: The I_T_L_Q nexus identifying the command (see 4.8).
Application Client Buffer Offset in bytes from the beginning of the application client's buffer (i.e., the
Offset: Data-Out Buffer) to the first byte of transferred data.
Device Server Buffer: The buffer in the device server to which data is to be transferred.
Request Byte Count: Number of bytes to be moved by this request.
If the SCSI Command Received SCSI transport protocol service included a First Burst Enabled argument and
random buffer access is not supported, first burst data shall be transferred to the Device Server Buffer until all
first burst data has been transferred. If the SCSI Command Received SCSI transport protocol service included
a First Burst Enabled argument and random buffer access is supported, first burst data should be transferred to
the Device Server Buffer but first burst data may be re-transferred across a service delivery subsystem.
This confirmation notifies the device server that the requested data has been successfully delivered to its buffer,
or that a service delivery subsystem error occurred while attempting to receive the data.
Input arguments:
I_T_L_Q Nexus: The I_T_L_Q nexus identifying the command (see 4.8).
Delivery Result: an encoded value representing one of the following:
DELIVERY SUCCESSFUL:The data was delivered successfully.
DELIVERY FAILURE: A service delivery subsystem error occurred while
attempting to receive the data.
The SCSI target port terminates all transfer service requests for the specified nexus (e.g., if an I_T_L nexus is
specified, then the SCSI target port terminates all transfer service requests from the logical unit for the specified
SCSI initiator port).
Input argument:
This confirmation is returned in response to a Terminate Data Transfer request whether or not the specified
nexus existed in the SCSI target port when the request was received. After a Data Transfer Terminated SCSI
transport protocol service confirmation has been sent in response to a Terminate Data Transfer SCSI transport
protocol service request, Data-In Delivered or Data-Out Received SCSI transport protocol service
confirmations shall not be sent for the commands specified by the nexus.
If a service response of SERVICE DELIVERY OR TARGET FAILURE is received for a command (e.g., when an I_T
nexus loss is detected by the SCSI initiator port), the application client shall maintain an application client
command to represent the command until the application client has determined that the command is no longer
known to the device server.
NOTE 9 - The names of the unit attention conditions listed in the subclause (e.g., SCSI BUS RESET
OCCURRED) are based on usage in SAM-2. The use of these unit attention condition names is not to be
interpreted as a description of how the unit attention conditions are represented by any given SCSI transport
protocol.
The device server shall create a command upon receiving a SCSI Command Received indication.
The command shall exist until:
a) the device server sends a SCSI transport protocol service response for the command of COMMAND
COMPLETE; or
b) the command is aborted as described in 5.6.
When a SCSI transport protocol does not require state synchronization (see 4.4.2), there may be a time skew
between the completion of a device server request-response transaction as seen by the application client and
device server. As a result, the lifetime of a command as it appears to the application client is different from the
lifetime observed by the device server.
Some commands initiate background operations that are processed after the command is no longer in the task
set (i.e., status has been returned for the command) (e.g., a SEND DIAGNOSTIC command when used to
initiate a background self-test (see SPC-4) or a write command when write cache is enabled (see SBC-3)).
Background operations may be aborted by power on, hard reset, or logical unit reset. Background operations
shall not be aborted by I_T nexus loss or power loss expected.
Background operations may generate deferred errors that are reported in the sense data for a subsequent
command (see SPC-4). Information that a deferred error occurred may be cleared before it is reported (e.g., by
power on, hard reset, or logical unit reset). Deferred errors should not be cleared by I_T nexus loss or power loss
expected.
Unless a command completes with a GOOD status or CONDITION MET status, the degree to which the required
command processing has been completed is vendor specific.
Table 37 — SCSI device conditions that abort commands in a SCSI initiator device
I_T nexus loss All commands associated with the lost I_T nexus. 6.3.4
See table 38 for a list of the SCSI device conditions that cause commands to be aborted in a SCSI target device.
Table 38 — SCSI device conditions that abort commands in a SCSI target device
Unit attention
condition (see TASK
SCSI device
Scope 5.14) additional ABORTED Reference
condition
sense code, if status a
any
COMMANDS
Power loss All commands in the SCSI CLEARED BY
No 6.3.5
expected target device. POWER LOSS
NOTIFICATION
SCSI transport
protocol specific As defined by the applicable SCSI transport protocol standard.
conditions
a
“Yes” indicates that each command that is aborted on an I_T nexus other than the one that caused the
SCSI device condition is completed with TASK ABORTED status, if the TAS bit is set to one in the Control
mode page (see SPC-4). “No” indicates that no status is returned for aborted commands.
b This SCSI device condition is able to be invoked by a task management function listed in table 39.
c
If the hard reset is caused by a particular I_T nexus (e.g., by a SCSI transport protocol-specific task
management function), then “yes” applies. Otherwise, “no” applies.
d
If the logical unit reset is caused by a particular I_T nexus (e.g., by a LOGICAL UNIT RESET task
management function), then “yes” applies. Otherwise (e.g., if triggered by a hard reset), “no” applies.
See table 39 for a list of the task management functions that cause commands to be aborted.
Unit attention
condition (see
TASK
Task management 5.14)
Scope ABORTED Reference
function additional
status b
sense code, if
any a
COMMANDS
CLEAR TASK SET c CLEARED BY
All commands in the task set. Yes 7.5
(I_T_L nexus) ANOTHER
INITIATOR
LOGICAL UNIT
RESET (I_T_L See table 38 description of the logical unit reset condition.
nexus)
See table 40 for a list of the command related conditions that cause commands to be aborted.
Unit attention
condition
TASK
(see 5.14)
Command related conditions Scope ABORTED Reference
additional
status b
sense code,
if any a
Processing of a PERSISTENT
RESERVE OUT command with a All commands from COMMANDS
PREEMPT AND ABORT service action all I_T nexuses with CLEARED BY
Yes SPC-4
with a reservation key that is associated the specified ANOTHER
with the I_T nexus on which the reservation key. INITIATOR
command was received (see SPC-4).
If one or more commands are cleared or aborted, the affected commands are also cleared from the SCSI initiator
ports in a manner that is outside the scope of this standard.
When a device server receives a command or task management function on an I_T nexus that causes
commands on the same I_T nexus to be aborted, the device server shall not return any notification that
commands have been aborted other than:
a) a completion response for the command or task management function that caused the command(s) to
be aborted; and
b) notification(s) associated with related effects of the command or task management function (e.g., a reset
unit attention condition).
When a device server receives a command or task management function on an I_T nexus that causes
commands on other I_T nexuses to be aborted, in addition to any notification (e.g., completion response) that a
command or task management function generates on the I_T nexus on which command or task management
function was received, the device server shall return any notifications for those commands on other I_T nexuses
based on the setting of the TAS bit in the Control mode page (see SPC-4):
a) if the TAS bit is set to zero, the device server:
A) shall not return status for the commands on other I_T nexuses that were aborted; and
B) shall establish a unit attention condition for the SCSI initiator port associated with each I_T nexus
containing commands on other I_T nexuses that were aborted with an additional sense code set as
defined in table 39 and table 40;
or
b) if the TAS bit is set to one, the device server:
A) shall complete each aborted command on other I_T nexuses with a TASK ABORTED status; and
B) shall not establish a unit attention condition for this reason.
When a logical unit completes one or more commands received on an I_T nexus with a status of TASK
ABORTED, the logical unit should complete all of the affected commands before entering any other commands
received on that I_T nexus into the task set.
Application Client
Application Client Command
Waiting
Activity Time
1 4
Command
Working
Activity Time
2 3
Device Server
2) the device server is notified through a SCSI Command Received indication containing the CDB and
command parameters. A command is created and entered into the task set. The device server may
invoke the appropriate data delivery service one or more times to complete command processing.
3) on command completion, the Send Command Complete SCSI transport protocol service is invoked to
return a GOOD status and a service response of COMMAND COMPLETE.
4) a confirmation of Command Complete Received is passed to the application client by the SCSI initiator
port.
5.8.1 Overview
An application client uses the NACA bit in the CONTROL byte of the CDB (see 5.2) to specify whether or not the
device server establishes an ACA condition when it terminates a command with CHECK CONDITION status.
The meaning of the value in the NACA bit is as follows:
a) If the NACA bit is set to zero, an ACA condition shall not be established; or
b) If the NACA bit is set to one, an ACA condition shall be established (see 5.9).
The requirements that apply when the ACA condition is not in effect are described in 5.8.2.
When a command terminates with a CHECK CONDITION status and an ACA condition is not established,
commands other than the command completing with a the CHECK CONDITION status may be aborted as
described in 5.8.3.
Any task 0 No
attribute
c
except the Process the command.
ACA task 1 Yes
attribute
0 No
ACA task Process an invalid task attribute
attribute 1 condition as described in 5.12. Yes
a
Task attributes are described in 8.6.
b
The NACA bit is in the CONTROL byte in the CDB (see 5.2).
c All the conditions that affect the processing of commands (e.g., reservations) apply.
5.8.3 Aborting commands terminated with a CHECK CONDITION status without establishing an ACA
When a command terminates with a CHECK CONDITION status where the NACA bit is set to zero in the
command’s CDB CONTROL byte (i.e., when an ACA condition is not established), commands in the dormant
command state or enabled command state (see 8.5) may be aborted based on the contents of the TST field and
QERR field in the Control mode page (see SPC-4) as shown in table 42. The TST field specifies the type of task
set in the logical unit. The QERR field specifies how the device server handles commands in the blocked
command state and dormant command state when another command terminates with a CHECK CONDITION
status.
000b Commands other than the command terminated with a CHECK CONDITION status shall
00b
001b not be aborted.
All enabled and dormant commands received on all I_T nexuses shall be aborted (see
000b
5.6).
01b
All enabled and dormant commands received on the I_T nexus on which the CHECK
001b CONDITION status was returned shall be aborted (see 5.6). All commands received on
other I_T nexuses shall not be aborted.
000b All enabled and dormant commands received on the I_T nexus on which the CHECK
11b CONDITION status was returned shall be aborted (see 5.6). All commands received on
001b other I_T nexuses shall not be aborted.
The steps taken by the device server to establish an ACA condition are described in 5.9.2. Upon establishment of
the ACA condition, some commands other than the command completing with the CHECK CONDITION status
may be aborted and continued processing of other commands may be blocked as described in 5.9.2.
While the ACA condition is in effect and the TMF_ONLY bit is set to zero in the Control mode page (see SPC-4),
new commands received by the logical unit from the faulted I_T nexus are not allowed to enter the task set
unless they have the ACA task attribute (see 8.6.5). One of the results of the ACA task attribute requirement is that
commands in-flight when the CHECK CONDITION status occurs are completed unprocessed with an ACA
ACTIVE status. Multiple commands may be sent one at a time using the ACA task attribute to recover from the
event that resulted in the ACA condition without clearing the ACA condition.
While the ACA condition is in effect and the TMF_ONLY bit is set to one, no new commands received by the logical
unit from the faulted I_T nexus are allowed to enter the task set.
While the ACA condition is in effect:
a) new commands received on the faulted I_T nexus shall be handled as described in 5.9.3, and
b) new commands received on I_T nexuses other than the faulted I_T nexus shall be handled as described
in 5.9.4.
The methods for clearing an ACA condition are described in 5.9.5.
QERR field specifies how the device server handles commands in the blocked command state and the dormant
command state when another command terminates with a CHECK CONDITION status.
All enabled commands received on all I_T nexuses shall transition to the blocked
000b command state (see 8.8). All dormant commands received on all I_T nexuses shall
remain in the dormant command state.
00b All enabled commands received on the faulted I_T nexus shall transition to the blocked
command state (see 8.8). All dormant commands received on the faulted I_T nexus shall
001b
remain in the dormant command state. All commands received on I_T nexuses other than
the faulted I_T nexus shall not be affected by the establishment of this ACA condition.
All enabled and dormant commands received on all I_T nexuses shall be aborted (see
000b
5.6).
01b
All enabled and dormant commands received on the faulted I_T nexus shall be aborted
001b (see 5.6). All commands received on I_T nexuses other than the faulted I_T nexus shall
not be affected by the establishment of this ACA condition.
All enabled and dormant commands received on the faulted I_T nexus shall be aborted
(see 5.6). All enabled commands received on I_T nexuses other than the faulted I_T
000b nexus shall transition to the blocked command state (see 8.8). All dormant commands
received on I_T nexuses other than the faulted I_T nexus shall remain in the dormant
11b command state.
All enabled and dormant commands received on the faulted I_T nexus shall be aborted
001b (see 5.6). All commands received on I_T nexuses other than the faulted I_T nexus shall
not be affected by the establishment of this ACA condition.
An ACA condition shall not cross task set boundaries and shall be preserved until it is cleared as described in
5.9.5.
If the SCSI transport protocol does not enforce state synchronization as described in 4.6.14, there may be a time
delay between the occurrence of the ACA condition and the time at which the application client becomes aware
of the condition.
5.9.3 Handling new commands received on the faulted I_T nexus when ACA is in effect
Table 44 describes the handling of new commands received on the faulted I_T nexus when ACA is in effect.
Table 44 — Handling for new commands received on a faulted I_T nexus during ACA
d
0 No 0 No
e
Process the command.
1 No 0 Yes d
ACA task attribute
n/a n/a 1 Complete the command n/a
with ACA ACTIVE status.
0 or 1 Yes n/a n/a
Any task
attribute except Complete the command
0 or 1 n/a n/a n/a
the ACA task with ACA ACTIVE status.
attribute
a
Task attributes are described in 8.6.
b The NACA bit is in the CONTROL byte in the CDB (see 5.2).
c
The TMF_ONLY bit is in the Control mode page (see SPC-4).
d
If a command with the ACA task attribute terminates with a CHECK CONDITION status, the existing ACA
condition shall be cleared and the value of the NACA bit shall control the establishment of a new ACA
condition.
e All the conditions that affect the processing of commands (e.g., reservations) apply.
5.9.4 Handling new commands received on non-faulted I_T nexuses when ACA is in effect
NOTE 10 - The processing of specific commands (e.g., PERSISTENT RESERVE OUT command with a
PREEMPT AND ABORT service action) received on a non-faulted I_T nexus while an ACA condition is in effect
provides SCSI initiator ports not associated with the faulted I_T nexus the opportunity to recover from error
conditions that the SCSI initiator port associated with the faulted I_T nexus is unable to recover from itself.
[Link] Handling new commands received on non-faulted I_T nexuses when ACA is in effect
The handling of commands received on I_T nexuses other than the faulted I_T nexus depends on the value in
the TST field in the Control mode page (see SPC-4).
Table 45 describes the handling of new commands received on I_T nexuses other than the faulted I_T nexus
when ACA is in effect.
Table 45 — Handling for new commands received on non-faulted I_T nexuses during ACA
Cases e) and f) may result in the establishment of a new ACA based on the value of the NACA bit.
When an ACA condition is cleared and no new ACA condition is established, the state of all commands in the
task set shall be modified as described in 8.8.
NOTE 11 - An overlapped command may be indicative of a serious error and, if not detected, may result in
corrupted data. This is considered a catastrophic failure on the part of the SCSI initiator device. Therefore,
vendor specific error recovery procedures may be required to guarantee the data integrity on the medium. The
SCSI target device logical unit may return additional sense data to aid in this error recovery procedure (e.g.,
sequential-access devices may terminate the overlapped command with the residue of blocks remaining to be
written or read at the time the second command was received).
NOTE 12 - The use of the INVALID MESSAGE ERROR additional sense code is based on its similar usage in
SAM-2. The use of the INVALID MESSAGE ERROR additional sense code is not to be interpreted as a
description of how the task attributes are represented by any given SCSI transport protocol.
Task attribute support should be reported with the Extended INQUIRY Data VPD page (see SPC-4).
Unit attention
Unit attention condition additional sense code condition
precedence
POWER ON, RESET, OR BUS DEVICE RESET OCCURRED highest
POWER ON OCCURRED or
DEVICE INTERNAL RESET
SCSI BUS RESET OCCURRED or
MICROCODE HAS BEEN CHANGED or
protocol specific
BUS DEVICE RESET FUNCTION OCCURRED
I_T NEXUS LOSS OCCURRED
COMMANDS CLEARED BY POWER LOSS NOTIFICATION
all others Lowest
For unit attention conditions with the lowest precedence level with a given ADDITIONAL SENSE CODE field value, the
unit attention condition with the ADDITIONAL SENSE CODE QUALIFIER field set to 00h has higher precedence level
than the unit attention conditions with the ADDITIONAL SENSE CODE QUALIFIER field set to values other than 00h
(e.g., PARAMETERS CHANGED has precedence over MODE PARAMETERS CHANGED and LOG
PARAMETERS CHANGED). A unit attention condition with the lowest precedence level has equal priority with all
unit attention conditions with the lowest precedence level with different ADDITIONAL SENSE CODE field values.
NOTE 13 - The unit attention additional sense code specificity order defined in 6.2 determines which unit
attention condition is allowed to be established when certain conditions occur. The unit attention condition
precedence defined in this subclause determines which unit attention conditions are allowed to clear other unit
attention conditions if they have not yet been reported.
The device server shall maintain a queue of unit attention conditions of unspecified order for each I_T nexus. The
queue should be large enough to hold every unit attention condition that the device server is capable of reporting.
When a device server establishes a unit attention condition:
1) the device server may clear unit attention conditions from the queue that are no longer needed as
follows:
A) the device server may clear any pending unit attention conditions in the queue that have lower
precedence levels (e.g., BUS DEVICE RESET FUNCTION OCCURRED may clear I_T NEXUS
LOSS OCCURRED and all unit attention conditions with a lower precedence); and
B) the device server should clear pending unit attention conditions that have the same additional sense
code (i.e., the device server should not add the same unit attention condition twice);
2) if a queue slot is available, then:
A) if a higher precedence unit attention condition is not in the queue, the device server shall add the
unit attention condition to the queue; or
B) if a higher precedence unit attention condition is in the queue, the device server should add the unit
attention condition to the queue.
In the sense data for the unit attention condition, the device shall either:
A) not include sense-key specific sense data; or
B) include sense-key specific sense data and set the OVERFLOW bit to zero (see SPC-4);
or
3) if a queue slot is not available, then the device server shall either:
A) replace any unit attention condition in the queue; or
logical unit. If the unit attention condition has an additional sense code of REPORTED LUNS DATA HAS
CHANGED, the SCSI target device shall clear any pending unit attention conditions with an additional
sense code of REPORTED LUNS DATA HAS CHANGED established for the I_T nexus on which the
command was received in each logical unit accessible by that I_T nexus. If the UA_INTLCK_CTRL field
contains 10b or 11b, the device server shall not clear unit attention conditions reported with a CHECK
CONDITION status.
STPL SAL
Processing a
LOGICAL
Power On Microcode UNIT RESET
Events Change task
management
function
Power Logical Unit
On Reset
Hard
Reset
Reset
Events
Transport Reset
Processing
an I_T
NEXUS
RESET task
management
function
Key
Notification mechanism not
Event Condition specified in this standard
STPL SAL
Power On
Events
Power
On
Reset Hard
Events Reset
Transport Reset
Key
Notification mechanism not
Event Condition specified in this standard
Table 47 — Unit attention additional sense codes for events detected by SCSI target devices
NOTE 14 - The names of the unit attention conditions listed in the subclause (e.g., SCSI BUS RESET
OCCURRED) are based on usage in SAM-2. The use of these unit attention condition names is not to be
interpreted as a description of how the unit attention conditions are represented by any given SCSI transport
protocol.
A logical unit should use the I_T NEXUS LOSS OCCURRED additional sense code when establishing a unit
attention condition for an I_T nexus loss if:
a) the SCSI initiator port to which the sense data is being delivered is the SCSI initiator port that was
associated with the I_T nexus loss, and the logical unit has maintained all state information specific to
that SCSI initiator port since the I_T nexus loss; or
b) the I_T nexus being used to deliver the sense data is the same I_T nexus that was lost, and the logical
unit has maintained all state information specific to that I_T nexus since the I_T nexus loss.
Otherwise, the logical unit shall use one of the less specific additional sense codes (e.g., POWER ON
OCCURRED) when establishing a unit attention condition for an I_T nexus loss.
6.3.1 Power on
Power on is a SCSI device condition resulting from a power on event. When a SCSI device is powered on, it shall
cause a hard reset.
The power on condition applies to both SCSI initiator devices and SCSI target devices.
Power on events include:
a) power being applied to the SCSI device; and
b) vendor-specific events that cause the SCSI device to behave as if power has been applied (e.g.,
firmware reboot).
The I_T nexus loss condition applies to both SCSI initiator devices and SCSI target devices.
When a SCSI target port detects an I_T nexus loss, a Nexus Loss event notification indication shall be delivered
to each logical unit to which the I_T nexus has access. In response to the resulting I_T nexus loss condition a
logical unit shall take the following actions:
a) abort all commands received on the I_T nexus as described in 5.6;
b) terminate all task management functions received on the I_T nexus;
c) clear all ACA conditions (see 5.9.5) associated with the I_T nexus;
d) establish a unit attention condition for the SCSI initiator port associated with the I_T nexus (see 5.14 and
6.2); and
e) perform any additional functions required by the applicable command standards.
If the logical unit retains state information for the I_T nexus that is lost, its response to the subsequent I_T nexus
re-establishment for the logical unit should include establishing a unit attention with an additional sense code set
to I_T NEXUS LOSS OCCURRED.
If the logical unit does not retain state information for the I_T nexus that is lost, it shall consider the subsequent
I_T nexus re-establishment, if any, as the formation of a new I_T nexus for which there is no past history (e.g.,
establish a unit attention with an additional sense code set to POWER ON OCCURRED).
When a SCSI initiator port detects an I_T nexus loss, it should terminate all its outstanding Execute Command
procedure calls and all its outstanding task management procedure calls for the SCSI target port associated with
the I_T nexus with a service response of SERVICE DELIVERY OR TARGET FAILURE.
Argument description:
I_T Nexus: The specific I_T nexus that has been detected as lost.
Argument descriptions:
SCSI Port: The specific SCSI port in the SCSI device for which a transport reset was detected.
The Power Loss Expected indication is defined for SCSI target devices.
Indication delivered to device servers and task managers.
Argument descriptions:
SCSI Port: The specific SCSI port in the SCSI device for which an unexpected power loss was
detected.
Service Response = Function name (IN ( Nexus ), OUT ( [Additional Response Information] )
Additional
Response
Task management function
Nexus argument Information Reference
(i.e., function name)
argument
supported
ABORT TASK I_T_L_Q Nexus no 7.2
ABORT TASK SET I_T_L Nexus no 7.3
CLEAR ACA I_T_L Nexus no 7.4
CLEAR TASK SET I_T_L Nexus no 7.5
I_T NEXUS RESET I_T Nexus no 7.6
LOGICAL UNIT RESET I_T_L Nexus no 7.7
QUERY TASK I_T_L_Q Nexus yes 7.8
QUERY TASK SET I_T_L Nexus no 7.9
QUERY ASYNCHRONOUS EVENT I_T_L Nexus yes 7.10
Input arguments:
Nexus: Contains an I_T Nexus argument, I_T_L Nexus argument, or I_T_L_Q Nexus
argument (see 4.8) identifying the command or commands affected by the task
management function.
I_T Nexus: The I_T nexus (see 4.8) affected by the task management function.
I_T_L Nexus: The I_T_L nexus (see 4.8) affected by the task management function.
I_T_L_Q Nexus: The I_T_L_Q nexus (see 4.8) affected by the task management function.
Output arguments:
Additional Response If supported by the SCSI transport protocol and the logical unit, then three bytes
Information: that are returned along with the service response for certain task management
functions (e.g., QUERY ASYNCHRONOUS EVENT). SCSI transport protocols
may or may not support the Additional Response Information argument. A SCSI
transport protocol supporting the Additional Response Information argument may
or may not require that logical units accessible through a SCSI target port using
that transport protocol support the Additional Response Information argument. All
output parameters are invalid.
One of the following SCSI transport protocol specific service responses shall be returned:
FUNCTION COMPLETE: A task manager response indicating that the requested function is complete.
Unless another response is required, the task manager shall return this
response upon completion of a task management request supported by the
logical unit or SCSI target device to which the request was directed.
FUNCTION SUCCEEDED: A task manager response indicating that the requested function is supported
and completed successfully. This task manager response shall only be used by
functions that require notification of success (e.g., QUERY TASK, QUERY TASK
SET, or QUERY ASYNCHRONOUS EVENT).
FUNCTION REJECTED: A task manager response indicating that the requested function is not supported
by the logical unit or SCSI target device to which the function was directed.
INCORRECT LOGICAL UNIT A task router response indicating that the function requested processing for an
NUMBER: incorrect logical unit number.
SERVICE DELIVERY The request was terminated due to a service delivery failure (see 3.1.117) or
OR TARGET FAILURE: SCSI target device malfunction. The task manager may or may not have
successfully performed the specified function.
Each SCSI transport protocol standard shall define the events for each of these service responses.
The task manager response to task management requests is subject to the presence of access restrictions, as
managed by ACCESS CONTROL OUT and ACCESS CONTROL IN commands (see SPC-4), as follows:
a) a task management request of ABORT TASK, ABORT TASK SET, CLEAR ACA, I_T NEXUS RESET,
QUERY TASK, QUERY TASK SET, or QUERY ASYNCHRONOUS EVENT shall not be affected by the
presence of access restrictions;
b) a task management request of CLEAR TASK SET or LOGICAL UNIT RESET received from a SCSI
initiator port that is denied access to the logical unit, either because it has no access rights or because it
is in the pending-enrolled state, shall not cause any changes to the logical unit; and
c) the task management function service response shall not be affected by the presence of access
restrictions.
Description:
This function shall be supported by all logical units.
The task manager shall abort the specified command, if it exists, as described in 5.6. Previously established
conditions, including mode parameters, reservations, and ACA shall not be changed by the ABORT TASK
function.
A response of FUNCTION COMPLETE shall indicate that the command was aborted or was not in the task set. In
either case, the SCSI target device shall guarantee that no further requests or responses are sent from the
command.
All SCSI transport protocol standards shall support the ABORT TASK task management function.
Description:
This function shall be supported by all logical units.
The task manager shall abort all commands in the task set that were received on the specified I_T nexus as
described in 5.6. Commands received on other I_T nexuses or in other task sets shall not be aborted. This task
management function performed is equivalent to a series of ABORT TASK requests.
All pending status and sense data for the commands that were aborted shall be cleared. Other previously
established conditions, including mode parameters, reservations, and ACA shall not be changed by the ABORT
TASK SET function.
All SCSI transport protocol standards shall support the ABORT TASK SET task management function.
Description:
This function shall be supported by a logical unit if it supports ACA (see 5.2).
For the CLEAR ACA task management function, the task set shall be the one defined by the TST field in the
Control mode page (see SPC-4).
An application client requests a CLEAR ACA using the faulted I_T nexus (see 3.1.39) to clear an ACA condition
from the task set serviced by the logical unit. The state of all commands in the task set shall be modified as
described in 8.8. For a command with the ACA task attribute (see 8.6.5) receipt of a CLEAR ACA function shall
have the same effect as receipt of an ABORT TASK function (see 7.2) specifying that command. If successful,
this function shall be terminated with a service response of FUNCTION COMPLETE.
If the task manager clears the ACA condition, any command within that task set may be completed subject to the
requirements for task set management specified in clause 8.
The service response for a CLEAR ACA request received from an I_T nexus other than the faulted I_T nexus
shall be FUNCTION REJECTED.
If there is no ACA condition, then the service response to the CLEAR ACA task management function shall be
FUNCTION COMPLETE.
All SCSI transport protocol standards shall support the CLEAR ACA task management function.
Description:
This function shall be supported by all logical units.
The task manager shall abort all commands in the task set as described in 5.6.
If the TST field is set to 001b (i.e., per I_T nexus) in the Control mode page (see SPC-4), there is one task set per
I_T nexus. As a result, no other I_T nexuses are affected and CLEAR TASK SET is equivalent to ABORT TASK
SET (see 7.2).
All pending status and sense data for the task set shall be cleared. Other previously established conditions,
including mode parameters, reservations, and ACA shall not be changed by the CLEAR TASK SET function.
All SCSI transport protocol standards shall support the CLEAR TASK SET task management function.
Description:
SCSI transport protocols may or may not support I_T NEXUS RESET and may or may not require logical units
accessible through SCSI target ports using such transport protocols to support I_T NEXUS RESET.
Each logical unit accessible through the SCSI target port shall perform the I_T nexus loss functions specified in
6.3.4 for the I_T nexus on which the function request was received, then:
1) the SCSI target device shall return a FUNCTION COMPLETE response; and
2) the logical unit(s) and the SCSI target port shall perform any additional functions specified by the SCSI
transport protocol.
Description:
This function shall be supported by all logical units.
Before returning a FUNCTION COMPLETE response, the logical unit shall perform the logical unit reset functions
specified in 6.3.3.
NOTE 15 - Previous versions of this standard only required LOGICAL UNIT RESET support in logical units that
supported hierarchical logical units.
All SCSI transport protocol standards shall support the LOGICAL UNIT RESET task management function.
Service Response = QUERY TASK (IN ( I_T_L_Q Nexus ), OUT ( [Additional Response
Information] ))
Description:
SCSI transport protocols may or may not support QUERY TASK and may or may not require logical units
accessible through SCSI target ports using such transport protocols to support QUERY TASK.
The task manager in the specified logical unit shall:
a) if the specified command is present in the task set, then return a service response set to FUNCTION
SUCCEEDED; or
b) if the specified command is not present in the task set, then return a service response set to FUNCTION
COMPLETE.
If the service response is not FUNCTION SUCCEEDED, then the task manager shall set the Additional Response
Information argument to 000000h.
If the service response is FUNCTION SUCCEEDED, then the task manager shall set the Additional Response
Information argument as defined in table 49.
Bit
7 6 5 4 3 2 1 0
Byte
0 (MSB)
PROGRESS INDICATION
1 (LSB)
2 Reserved
The PROGRESS INDICATION field is a percent complete indication of the specified command. The returned value is
a numerator that has 65 536 (i.e., 10000h) as its denominator. The progress indication shall be based upon the
total operation. A value of one indicates the minimum progress, and a value of FFFFh indicates the maximum
progress. A value of zero indicates that the progress indicator is not supported
The progress indication should be time related. The granularity of these steps should be small enough to provide
reasonable assurances to the application client that progress is being made.
Description:
SCSI transport protocols may or may not support QUERY TASK SET and may or may not require logical units
accessible through SCSI target ports using such transport protocols to support QUERY TASK SET.
The task manager in the specified logical unit shall:
a) if there is any command present in the task set from the specified I_T nexus, then return a service
response set to FUNCTION SUCCEEDED; or
b) if there is no command present in the task set from the specified I_T nexus, then return a service
response set to FUNCTION COMPLETE.
Service Response = QUERY ASYNCHRONOUS EVENT (IN ( I_T_L Nexus ), OUT ( [Additional
Response Information] ))
Description:
A SCSI transport protocol may or may not support QUERY ASYNCHRONOUS EVENT. A SCSI transport
protocol supporting QUERY ASYNCHRONOUS EVENT may or may not require logical units accessible through
SCSI target ports using that transport protocol to support QUERY ASYNCHRONOUS EVENT.
The task manager in the specified logical unit shall:
a) if there is a unit attention condition (see 5.14) or a deferred error (see SPC-4) pending for the specified
I_T nexus, then return a service response set to FUNCTION SUCCEEDED; or
b) if there is no unit attention condition or deferred error pending for the specified I_T nexus, then return a
service response set to FUNCTION COMPLETE.
If the service response is not FUNCTION SUCCEEDED, then the task manager shall set the Additional Response
Information argument to 000000h.
If the service response is FUNCTION SUCCEEDED, then the task manager shall set the Additional Response
Information argument as defined in table 50.
Bit
7 6 5 4 3 2 1 0
Byte
The UADE DEPTH field indicates the number of pending unit attention conditions or deferred errors and is defined
in table 51.
Code Description
00b The combined number of unit attention conditions and deferred errors is unknown.
01b The combined number of unit attention conditions and deferred errors is one.
10b The combined number of unit attention conditions and deferred errors is greater than one.
11b Reserved
The SENSE KEY field indicates the value of the SENSE KEY field that would be returned in the sense data for the
next unit attention condition or deferred error that is going to be reported (see SPC-4).
The ADDITIONAL SENSE CODE field indicates the value of the ADDITIONAL SENSE CODE field in the next unit attention
condition or deferred error that is going to be reported (see SPC-4).
The ADDITIONAL SENSE CODE QUALIFIER field indicates the value of the ADDITIONAL SENSE CODE QUALIFIER field in
the next unit attention condition or deferred error that is going to be reported (see SPC-4).
b) notification of a unit attention condition with any additional sense code whose ADDITIONAL SENSE CODE
field contains 29h (e.g., POWER ON, RESET, OR BUS DEVICE RESET OCCURRED; POWER ON
OCCURRED; SCSI BUS RESET OCCURRED; BUS DEVICE RESET FUNCTION OCCURRED;
DEVICE INTERNAL RESET; or I_T NEXUS LOSS OCCURRED);
c) notification of a unit attention condition with an additional sense code of MICROCODE HAS BEEN
CHANGED; or
d) notification of a unit attention condition with an additional sense code of COMMANDS CLEARED BY
POWER LOSS NOTIFICATION.
If a service response of SERVICE DELIVERY OR TARGET FAILURE is received for a task management function (e.g.,
when an I_T nexus loss is detected by the SCSI initiator port), the application client shall maintain an application
client task management function to represent the task management function until the application client has
determined that the task management function is no longer known to the device server.
NOTE 17 - The names of the unit attention conditions listed in the subclause (e.g., SCSI BUS RESET
OCCURRED) are based on usage in SAM-2. The use of these unit attention condition names is not to be
interpreted as a description of how the unit attention conditions are represented by any given SCSI transport
protocol.
All SCSI transport protocol standards shall define the SCSI transport protocol specific requirements for
implementing the Send Task Management Request request (see 7.12.2), the Task Management Request
Received indication (see 7.12.3), the Task Management Function Executed response (see 7.12.4), and the
Received Task Management Function Executed confirmation (see 7.12.5) SCSI transport protocol services.
A SCSI transport protocol standard may specify different implementation requirements for the Send Task
Management Request request SCSI transport protocol service for different values of the Function Identifier
argument.
All SCSI initiator devices shall implement the Send Task Management Request request and the Received
Task Management Function Executed confirmation SCSI transport protocol services as defined in the
applicable SCSI transport protocol standards.
All SCSI target devices shall implement the Task Management Request Received indication and the Task
Management Function Executed response SCSI transport protocol services as defined in the applicable SCSI
transport protocol standards.
7.12.2 Send Task Management Request SCSI transport protocol service request
An application client uses the Send Task Management Request SCSI transport protocol service request to
request that a SCSI initiator port send a task management function.
Send Task Management Request SCSI transport protocol service request:
Input arguments:
7.12.3 Task Management Request Received SCSI transport protocol service indication
A task router (see 4.6.8) uses the Task Management Request Received SCSI transport protocol service
indication to notify a task manager that it has received a task management function.
Task Management Request Received SCSI transport protocol service indication:
Input arguments:
7.12.4 Task Management Function Executed SCSI transport protocol service response
A task manager uses the Task Management Function Executed SCSI transport protocol service response to
request that a SCSI target port transmit task management function executed information.
Task Management Function Executed SCSI transport protocol service response:
Task Management Function Executed (IN ( Nexus, Service Response, [Additional Response
Information] ))
Input arguments:
Output argument:
Additional Response The Additional Response Information output argument for the task management
Information: procedure call (see 7.1).
7.12.5 Received Task Management Function Executed SCSI transport protocol service confirmation
A SCSI initiator port uses the Received Task Management Function Executed SCSI transport protocol service
confirmation to notify an application client that it has received task management function executed information.
Received Task Management Function Executed SCSI transport protocol service confirmation:
Received Task Management Function Executed (IN ( Nexus, Service Response, [Additional
Response Information] ))
Input arguments:
Output argument:
Additional Response The Additional Response Information output argument for the task management
Information: procedure call (see 7.1).
Each SCSI transport protocol shall allow a Received Task Management Function Executed confirming
completion of the requested task to be associated with the corresponding Send Task Management Request.
Application Client
Waiting
Activity Time
1 4
Task Management
Function
Working
Activity Time
2 3
Task Manager
Command
Description
management event
If the TST field in the Control mode page (see SPC-4) equals 000b, all commands
received on all I_T nexuses and accepted earlier in time than the referenced
All older commands
command have completed. If the TST field equals 001b, all commands received
completed:
on the referenced I_T nexus and accepted earlier in time than the referenced
command have completed.
If the TST field equals 000b, all the following commands received on all I_T
nexuses have completed:
a) all head of queue commands; and
b) all ordered commands accepted earlier in time than the referenced
All head of queue
command.
and older ordered
If the TST field equals 001b, the following commands received on the referenced
commands completed:
I_T nexus have completed:
a) all head of queue commands; and
b) all ordered commands accepted earlier in time than the referenced
command.
ACA establishment: An ACA condition has been established (see 5.8).
command abort: A command has been aborted as described in 5.6.
The device server has sent a service response of COMMAND COMPLETE for the
command completion:
command (see 5.1 and 5.5).
command completed: A command has terminated or aborted.
ACA cleared: An ACA condition has been cleared (see 5.9.5).
8.5.1 Overview
Case 1
Command Dormant
Timeline
A B C
Command Command Command
Created Enabled Completed Application client
observes state
Case 2
Timeline
A B C
Command Created Command
and Enabled Completed
8.6.1 Overview
The application client shall assign a task attribute (see table 54) to each command.
SCSI transport protocols shall provide the capability to specify a unique task attribute for each command.
Value Description
0h A command with either no command priority or a command with
a vendor-specific level of scheduling importance.
1h A command with the highest scheduling importance.
.
. A command with decreased scheduling importance.
.
Fh A command with the lowest scheduling importance.
If the Command Priority argument is set to zero or is not contained within the Send SCSI Received SCSI
transport protocol service indication (see 5.4.2), and a priority has been assigned to the I_T_L nexus, then the
device server shall use the specified priority for the I_T_L nexus as the command priority. A priority is assigned to
an I_T_L nexus by a SET PRIORITY command (see SPC-4) or by the INITIAL COMMAND PRIORITY field in the
Control Extension mode page (see SPC-4). If no priority has been assigned to the I_T_L nexus using the SET
PRIORITY command and the logical unit does not support the INITIAL COMMAND PRIORITY field in the Control
Extension mode page, then the device server shall set the command priority to 0h (i.e., vendor specific), or the
command shall have no command priority.
A task manager may use command priority to determine an ordering to process commands with the SIMPLE task
attribute within the task set. A difference in command priority between commands may not override other
scheduling considerations (e.g., different times to access different logical block addresses) or vendor specific
scheduling considerations. However, processing of a collection of commands with different task priorities should
cause the subset of commands with the higher task priorities to complete with status sooner in aggregate than
the same subset would if the same collection of commands were submitted under the same conditions but with
all task priorities being equal.
S0:S1 S0:S2
SIMPLE or ORDERED task HEAD OF QUEUE or ACA task
attribute attribute
S1:S2
No ordering or blocking conditions
S4: Completed
Remove command from task set S3: Blocked
S2:S3
ACA
S3:S4 Established
Command Abort
S3:S2
ACA
Cleared
S1:S4 S2:S4
Command Abort Command Completed
Transition S0:S1: If a newly accepted command has the SIMPLE or ORDERED task attribute, it shall transition to
the dormant command state.
Transition S0:S2: If a newly accepted command has the HEAD OF QUEUE or ACA task attribute, it shall transition
to the enabled command state.
Transition S1:S2: The task attribute of a dormant command shall affect the transition to the enabled command
state as follows:
a) a dormant command having the SIMPLE task attribute shall enter the enabled command state when all
commands having a HEAD OF QUEUE task attribute and older commands having an ORDERED task
attribute (see 8.4) have completed; or
b) a dormant command having the ORDERED task attribute shall enter the enabled command state when all
commands having a HEAD OF QUEUE task attribute and all older commands (see 8.4) have completed.
If the TST field in the Control mode page (see SPC-4) contains 000b, then the transition from dormant command
to enabled command shall not occur while an ACA is in effect for any I_T nexus (see 5.9.3 and 5.9.4). If the TST
field contains 001b, then dormant commands from the faulted I_T nexus shall not transition to the enabled
command state while an ACA is in effect for that I_T nexus (see 5.9.3).
Transition S2:S3: The establishment of an ACA condition (see 8.4) shall cause zero or more enabled
commands to enter the blocked command state as described in 5.9.2.
Transition S3:S2: When an ACA condition is cleared (see 8.4), commands that entered the blocked command
state when the ACA condition was established (see 5.9.2) shall re-enter the enabled command state.
Transition S2:S4: A command that has completed (see 8.4) or aborted (see 8.4 and 5.6) shall enter the
completed command state. This is the only state transition out of S2:Enabled that applies to commands having
an ACA task attribute.
Transitions S1:S4, S3:S4: A command abort event (see 8.4 and 5.6) shall cause the command to
unconditionally enter the completed command state.
8.9.1 Introduction
Several task set management scenarios are shown in 8.9.2, 8.9.3, and 8.9.4. The examples are valid for
configurations with one or multiple SCSI initiator ports when the TST field contains 000b (i.e., the interaction
among commands in a task set is independent of the I_T nexus on which a command is received). The examples
are also valid for a single I_T nexus when the TST field contains 001b (i.e., task set management proceeds
independently for each I_T nexus and the events and transitions for the task set associated with one I_T nexus
do not affect the task set management for task sets associated with other I_T nexuses). Throughout these
examples, the scope of the task set box drawn in each snapshot depends on the setting of the TST field in the
Control mode page (see SPC-4).
The figure accompanying each example shows successive snapshots of a task set after various events (e.g.,
command creation or completion). In all cases, the constraints on command completion order established using
Control mode page (see SPC-4) fields other that the TST field (e.g., the QUEUE ALGORITHM MODIFIER field) are not
in effect.
A task set is shown as an ordered list or queue of commands with commands having a HEAD OF QUEUE task
attribute towards the top of the figure. A new command having a HEAD OF QUEUE task attribute always enters the
task set at the head, displacing older commands having a HEAD OF QUEUE task attribute. A command having a
SIMPLE task attribute, ORDERED task attribute, or ACA task attribute always enters the task set at the end of the
queue.
Command, denoted by rectangles, are numbered in ascending order from oldest to most recent. Fill, shape and
line weight are used to distinguish command states and task attributes are shown in table 56.
The conditions preventing a dormant command from entering enabled command state, except for ACA
conditions, are shown by means of blocking boundaries. Such boundaries appear as horizontal lines with an
arrow on both. The commands causing the barrier condition are described as part of each example. A command
is impeded by the barrier if it is between the boundary and the end of the queue. When ACA is not in effect, a
command may enter the enabled command state after all intervening barriers have been removed.
Simple 2 Simple 4
Simple 4
Time
Figure 44 — Commands having the HEAD OF QUEUE task attribute and blocking boundaries (example 1)
In snapshot 1 the task set contains one command having a HEAD OF QUEUE task attribute and one command
having a SIMPLE task attribute. As shown by the blocking boundary, command having a SIMPLE task attribute 2 is
in the dormant command state because of the command having a HEAD OF QUEUE task attribute. Snapshot 2
shows the task set after the command having a HEAD OF QUEUE task attribute 3 and the command having a
SIMPLE task attribute 4 are created. The new command having a HEAD OF QUEUE task attribute is placed at the
front of the queue in the enabled command state, displacing command 1. Snapshot 3 shows the task set after
command 3 completes. Since the conditions indicated by the command 1 blocking boundary are still in effect,
command 2 and command 4 remain in the dormant command state.
Figure 45 is the same as the previous example, except that command 1 completes instead of command 3.
Simple 4
Time
Figure 45 — Commands having the HEAD OF QUEUE task attribute and blocking boundaries (example 2)
Because the blocking boundary remains in place for a command having a HEAD OF QUEUE task attribute, both the
commands having a SIMPLE task attribute remain in the dormant command state in snapshot 3. The blocking
boundary is not removed until all commands having a HEAD OF QUEUE task attribute complete.
Simple 4 Ordered 5
Blocking boundary
commands 1-4
Ordered 5
The state of dormant command 2 through command 5 is determined by the requirements shown in table 57.
Simple 2 Simple 4
ACA 5
The completion of command 2 with CHECK CONDITION status causes command 1 to enter the blocked
command state shown in snapshot 2. In snapshot 3, command having an ORDERED task attribute 3 is aborted
using the ABORT TASK task management function and command having an ACA task attribute 5 is created to
perform additional handling for the exception. Once the ACA condition is cleared (i.e., snapshot 4), command
having a SIMPLE task attribute 1 is allowed to reenter the enabled command state. Since there are no commands
having a HEAD OF QUEUE task attribute or older commands having an ORDERED task attribute, command 4 also
transitions to the enabled command state.
Annex A
(informative)
Identifier
Attribute
Size Support requirements a
Name
Attribute
Size Support requirements b
a
SCSI device name not specified optional
Each SCSI transport protocol defines the size and format of identifier attributes and name attributes.
See table A.3 for a list of the sizes for identifier attributes for each SCSI transport protocol.
Table A.3 — Identifier attribute size for each SCSI transport protocol
Size
Attribute
FCP-4 SRP iSCSI SBP-3 SPL SSP ADT-2 UAS
Initiator port a
3 bytes 16 bytes 241 bytes 2 bytes 8 bytes none 1 byte
identifier
Target port a
3 bytes 16 bytes 233 bytes 11 bytes 8 bytes none TBD
identifier
See table A.4 for a list of the format of the identifier attributes for each SCSI transport protocol.
Table A.4 — Identifier attribute format for each SCSI transport protocol
Format
Attribute
b
FCP-4 SRP iSCSI SBP-3 SPL SSP ADT-2 UAS
iSCSI name c
Fibre
Initiator EUI-64 || ",i,0x" || NAA IEEE
Channel binary value
port || 8 byte Initiator binary value Registered None
address a set to one
identifier extension Session format
identifier
Identifier d
as specified as specified
as specified as specified in this as specified in this as specified
as specified in
in this in this standard in this standard in this
LUN this standard
standard standard (2 byte standard (2 byte standard
(see 4.7)
(see 4.7) (see 4.7) version only (see 4.7) version only (see 4.7)
see 4.7) see 4.7)
See table A.5 for a list of the size of the name attributes for each SCSI transport protocol.
Table A.5 — Name attribute size for each SCSI transport protocol
a
Size
Attribute
b
FCP-4 SRP iSCSI SBP-3 SPL SSP ADT-2 UAS
Logical unit
Reported in the Device Identification VPD page (see SPC-4).
name
a
Any SCSI transport protocol may support the SCSI name string format (see SPC-4), resulting in names with
the sizes shown in the iSCSI column.
b
Maximum size, including the terminating null character byte.
See table A.6 for a list of the format of the name attributes for each SCSI transport protocol.
Table A.6 — Name attribute format for each SCSI transport protocol
a
Format
Attribute
b
FCP-4 SRP iSCSI SBP-3 SPL SSP ADT-2 UAS
iSCSI name
Fibre c
EUI-64 || ",i,0x" ||
Initiator port Channel not not
|| 8 byte Initiator EUI-64 not specified
name Name_ d specified specified
extension Session
Identifier
Identifier e
iSCSI name
Fibre c
EUI-64 EUI-64 ||
Target port Channel not not
|| 8 byte || ",t,0x" || Discovery not specified
name Name_ d specified specified
extension Target Portal ID g
Identifier
Group Tag f
Logical unit
Device Identification VPD page name (see SPC-4)
name
Annex B
(informative)
SCSI Initiator Port attributes and SCSI Target Port attributes supported by
SCSI transport protocols
Table B.1 lists the values of the SCSI Initiator Port attributes that a SCSI initiator port using each different SCSI
transport protocol is able to return, and the values of the SCSI Target Port attributes that a SCSI target port using
that SCSI transport protocol is able to return.
Table B.1 — SCSI Initiator Port attributes and SCSI Target Port attributes that are supported by
SCSI transport protocols
Maximum CDB
16 268 65 550 268 268
length (in bytes) a
Command identifier
3 16 32 16 64
size (in bits)
Task Attributes
SIMPLE, HEAD OF QUEUE, ORDERED, and ACA
supported
Maximum Data-In
Buffer Size (in FFFF FFFFh
bytes)
Maximum Data-Out
Buffer Size (in FFFF FFFFh
bytes)
Command Priority
no yes no yes no
supported
Maximum Sense
Data Length (in FFFFh FFFF FFFFh FFFFh 3E8h d FFFF FFFFh
bytes) c
Status Qualifier
no yes no yes no
supported
Additional
Response
no yes no yes no
Information
supported
Bidirectional
Commands yes
supported
ABORT TASK,
ABORT TASK, ABORT TASK,
ABORT TASK
ABORT TASK ABORT TASK
SET, CLEAR
Task Management SET, CLEAR SET, CLEAR
TASK SET,
Functions All TASK SET, All TASK SET,
LOGICAL
supported e LOGICAL LOGICAL
UNIT RESET,
UNIT RESET, UNIT RESET,
CLEAR ACA,
CLEAR ACA CLEAR ACA
QUERY TASK
a
SPC-4 defines the maximum length of a CDB as being 260 bytes.
b
Maximum CRN of zero indicates that CRN is not supported.
c
SPC-4 defines the maximum length of sense data as being 252 bytes.
d
3E8h represents 1 000 bytes.
e
The task management function name is the name of the procedure call, not an argument to a procedure
call.
Annex C
(informative)
The introduction of a UML model into this standard resulted in changes in terminology between this standard and
SAM-3 (see table C.1).
Annex D
(informative)
Bibliography
ISO/IEC 13213:1994, Information technology - Microprocessor systems - Control and Status Registers
Architecture for microcomputer buses [ANSI/IEEE 1212, 1994 Edition]. See [Link]
ISO/IEC 14776-412, Information technology - Small computer system interface (SCSI) - Part 412: Architecture
model-2 (SAM-2).
ISO/IEC 14776-413, Information technology - Small computer system interface (SCSI) - Part 412: Architecture
model-3 (SAM-3).
ISO/IEC 10646-1:2000, Information technology - Universal Multiple-Octet Coded Character Set (UCS) - Part 1:
Architecture and Basic Multilingual Plane. See [Link]