Overview of ISO/IEC 14776-381:2002 – SCSI Primary Commands-3 (SPC-3)

Foundational Command Set for SCSI Device Operations and Protocol Compliance

Scope of ISO/IEC 14776-381:2002 (SPC-3)

ISO/IEC 14776-381:2002, also known as SCSI Primary Commands-3 (SPC-3), defines the primary command set for SCSI devices. This standard is part of the larger ISO/IEC 14776 series that specifies the Small Computer System Interface (SCSI) protocol family. SPC-3 establishes a common set of mandatory and optional commands applicable to all SCSI device types, regardless of the specific peripheral device class (e.g., direct‑access block devices, sequential‑access devices, media changers).

The standard covers command transport between an initiator and a target across any SCSI transport protocol (e.g., Parallel SCSI, Fibre Channel, SAS, iSCSI). It specifies the command descriptor block (CDB) formats, parameter data, status codes, sense data structure, and task management functions. SPC-3 replaces SPC-2 (ISO/IEC 14776-382) and introduces enhancements such as expanded sense key codes, persistent reservations, and improved power management commands.

Use Note: SPC-3 is the foundation upon which device‑specific command sets (e.g., SBC‑3 for block devices, SSC‑3 for stream devices) are built. For a complete SCSI implementation, this standard must be used in conjunction with the appropriate command set standard.

Technical Requirements and Key Commands

Mandatory Primary Commands

Every SCSI target device must implement the following mandatory commands as defined in SPC-3:

CommandCDB OpcodeDescription
INQUIRY12hReturns device identification, manufacturer, and global standard compliance information.
TEST UNIT READY00hIndicates whether the logical unit is ready to accept further commands.
REQUEST SENSE03hRetrieves sense data describing the last check condition.
SEND DIAGNOSTIC1DhInitiates diagnostics or self‑tests on the device.
RECEIVE DIAGNOSTIC RESULTS1ChReturns the results of a preceding SEND DIAGNOSTIC command.

Supported VPD Pages and Mode Parameters

SPC-3 mandates that an INQUIRY command shall return at least the Supported VPD Pages vital product data (VPD) page (0x00). Additional VPD pages define unit serial numbers, device identification descriptors, and extended block limits. The standard also introduces the Extended INQUIRY Data VPD page (0x86) and the ATA Pass‑Through VPD page (0x89). The mode sense and mode select commands expose mode pages that control device behaviour. Key mode pages defined in SPC-3 include the Control Mode Page and the Power Conditions Mode Page.

Persistent Reservations

A major enhancement in SPC-3 is the introduction of Persistent Reservations. This mechanism allows an initiator to reserve a logical unit across resets and power cycles using the RESERVE and RELEASE commands with a service action field. The standard defines three key elements: reservation key (6 bytes), service action (e.g., REGISTER, RESERVE, RELEASE, PREEMPT), and the specified scope (e.g., L_UNIT, UNIQUE_ID).

Implementation Highlight: Persistent reservations are critical for cluster configurations and high‑availability storage systems where multiple initiators share access to a single logical unit.

Sense Data Architecture

SPC-3 specifies the structure of sense data in two formats: the fixed format (common in earlier SCSI) and the descriptor format (introduced for extensibility). The descriptor format includes a sense key, additional sense code (ASC), additional sense code qualifier (ASCQ), and optional common descriptors. Error handling is defined through the check condition status and the autosense mechanism.

Implementation Highlights

When implementing an SPC-3-compliant SCSI device, developers should note the following key areas:

  • Command Timeouts and Contingency: The standard does not define specific timeout values but relies on the application client to handle timeouts according to the transport protocol.
  • Power Management: SPC-3 includes the START STOP UNIT and SET POWER CONDITION commands, enabling power state transitions (active, standby, idle, logical unit sleeping). The Power Conditions Mode Page (page 0x1A) allows configuration of time‑based automatic power‑saving transitions.
  • Self‑Test Procedures: The SEND DIAGNOSTIC command also supports user‑defined diagnostic pages via page codes. The device must return diagnostic data as specified in the standard.
  • Interoperability: The standard ensures that a target device that claims SPC-3 conformity will always accept the mandatory commands. Vendors may extend the command set with vendor‑specific CDBs (codes 0xC0–0xFF).
Caution: The link between SPC-3 and the device‑specific command set must be carefully managed. For example, a block device (SBC‑3) may use commands like READ (10) that are not defined in SPC-3 but rely on the primary command infrastructure.

Compliance Notes

Compliance with ISO/IEC 14776-381:2002 is declared by a device’s INQUIRY response data. The SCSI standard identifier field in the INQUIRY response shall indicate the version of SPC that the device implements. For SPC-3, the version descriptor should be set to 0x04 (SPC-3).

Manufacturers must ensure that all mandatory commands are correctly implemented. A compliance test should cover:

  • INQUIRY data correctness – version descriptors and VPD pages.
  • Mode page compliance – mandatory default values and modifiable fields.
  • Persistent reservation behaviour across reboot and connection loss.
  • Sense data format (both fixed and descriptor) and ASC/ASCQ mapping.
Compliance ItemRequirementVerification Method
Mandatory CommandsAll six commands (INQUIRY, TEST UNIT READY, REQUEST SENSE, SEND DIAGNOSTIC, RECEIVE DIAGNOSTIC RESULTS, REPORT LUNS) must be present.Send each command with valid CDB and confirm non‑invalid response.
Persistent ReservationsRESERVE/RELEASE with service actions REGISTER, RESERVE, RELEASE, CLEAR, PREEMPT, PREEMPT_AND_ABORT must be supported.Test reservation conflicts and pre‑emption across power cycles.
VPD PagesCorrect response for Supported VPD Pages (0x00) and Device Identification (0x83) pages.INQUIRY command with EVPD=1 and page code.
Non‑compliance impact: Devices that fail to report the correct SPC version or skip mandatory commands may not interoperate with standard SCSI initiators, leading to bus enumeration failures.

Additionally, note that SPC-3 has been superseded by SPC-4 (ISO/IEC 14776-391) and later revisions. However, many deployed devices still conform to SPC-3, and this standard remains the baseline for legacy SCSI interoperability.

Q: Is ISO/IEC 14776-381:2002 identical to T10 SPC-3?
A: Yes, ISO/IEC 14776-381:2002 is the international adoption of the INCITS T10 standard “SCSI Primary Commands-3” (SPC-3). The technical content is identical, but the ISO version may include minor editorial changes.
Q: Can I use SPC-3 without other SCSI command set standards?
A: SPC-3 alone cannot control a storage device. It must be combined with a device‑specific command set such as SBC‑3 (block commands) or SSC‑3 (stream commands) to perform actual input/output operations.
Q: What are the main benefits of persistent reservations over legacy reserves?
A: Persistent reservations survive power‑on resets and allow multiple initiators to share a logical unit without data corruption. They provide fine‑grained exchange control through service actions and are the foundation for SCSI‑3 clustering.
Q: How do I know if my device is SPC-3 compliant?
A: The most reliable way is to issue an INQUIRY command with the EVPD bit set to 0 and page code 0x00 (Supported VPD Pages). Then query the Device Identification VPD page (0x83) and the Version Descriptors to verify that SPC-3 (version 0x04) is listed.

© 2026 – International Standards Technical Review. This article is for informational purposes only and does not replace official standard documents.

📥 Standard Documents Download

🔒
Please wait 10 seconds, the download links will appear after the ad loads

Leave a Reply

Your email address will not be published. Required fields are marked *