Understanding CAN/CSA ISO/IEC 14776-362-07: SCSI Primary Commands – 3 (SPC-3) – Scope, Technical Requirements, and Compliance

A technical deep dive into the SCSI primary command set standard adopted from ISO/IEC 14776-362:2006

The CAN/CSA ISO/IEC 14776-362-07 standard is the Canadian adoption of the international ISO/IEC 14776-362:2006, commonly known as SCSI Primary Commands – 3 (SPC-3). This standard defines the fundamental command set, device model, and protocol interactions for SCSI logical units, forming the foundation upon which all SCSI device-type-specific command sets (e.g., SBC for block devices, SSC for stream devices) are built. Engineers designing, implementing, or testing SCSI storage subsystems must thoroughly understand this document to ensure interoperability and compliance across serial and parallel SCSI transport layers.

1. Scope and Applicability

SPC-3 specifies the primary command architecture for all SCSI devices, independent of the transport protocol. The standard covers:

  • Command descriptor blocks (CDBs) – structures for commands that are common to all SCSI logical units.
  • Device server model – behavior of the logical unit when processing commands.
  • Status and sense data – response mechanisms to report success, failure, and error conditions.
  • Mode parameters – configuration pages that control device behavior.
  • Log pages – historical and statistical data collected by the device.

The standard is transport agnostic and applies to SAS, Fibre Channel, iSCSI, and legacy Parallel SCSI implementations. Its requirements are mandatory for any device claiming SCSI compliance.

Tip: When designing a logical unit, always begin with the SPC-3 command set and then add your device-type-specific commands (e.g., READ/WRITE for disks). This ensures broad compatibility and simplifies certification.

2. Technical Requirements and Command Set

2.1 Command Descriptor Blocks (CDBs)

Every command begins with a CDB of 6, 10, 12, 16, or 32 bytes, depending on the operation. The first byte is the operation code, which identifies the command. SPC-3 defines the following categories of primary commands:

  • Inquiry commands – report device identification, version, and supported features.
  • Mode Sense/Select – access and change device configuration parameters.
  • Log Sense/Select – retrieve device statistics and diagnostic logs.
  • Report LUNs – discover available logical units in a target.
  • Test Unit Ready – check if the logical unit is ready for operations.
  • Request Sense – retrieve sense data after a CHECK CONDITION status.
Table 1 – Selected SPC-3 Primary Commands and Operation Codes
Operation Code Command Name Description SCSI Feature
00h TEST UNIT READY Polls the logical unit readiness Mandatory
03h REQUEST SENSE Retrieves auto‑sense data Mandatory
12h INQUIRY Returns device identification and capabilities Mandatory
1Ah MODE SENSE (6) Reads mode parameters (6‑byte CDB) Mandatory
15h MODE SELECT (6) Sets mode parameters (6‑byte CDB) Mandatory
A0h REPORT LUNS Lists all logical units accessible via the target Mandatory for multi‑LU targets
4Dh LOG SENSE Returns log page data (e.g., error counters) Conditional

2.2 Status and Sense Data

After executing a command, the device server returns a status byte in the FCP_RSP or equivalent. SPC-3 defines eight status codes, the most common being 00h (GOOD) and 02h (CHECK CONDITION). When a CHECK CONDITION is returned, the initiator must issue REQUEST SENSE to retrieve the sense data, which includes a sense key, additional sense code (ASC), and additional sense code qualifier (ASCQ). SPC-3 specifies the format and content of sense data, including fixed and descriptor formats.

Common Pitfall: Many legacy implementations still omit the DESCRIPTOR FORMAT sense data when returning CHECK CONDITION. SPC-3 strongly recommends using descriptor format for richer error reporting. Adherence to this recommendation simplifies protocol debugging and improves compliance.

3. Implementation Highlights

3.1 Device Model and Command Queuing

SPC-3 introduces a modern device server model with support for tagged command queuing (up to 256 tasks). The standard defines task attributes (SIMPLE, ORDERED, HEAD OF QUEUE, ACA) that govern command execution order and queuing behavior. Hardware and firmware developers must implement the task management model correctly to avoid data integrity issues, especially in multi‑initiator environments.

The model also includes:

  • Logical unit number (LUN) reporting through REPORT LUNS and address methods defined in SPC-3.
  • Asymmetric logical unit access for active‑active storage controllers.
  • Events and asynchronous notification (e.g., unit attention conditions).

3.2 Compliance Levels

SPC-3 is part of a larger SCSI standards suite. Compliance with earlier versions (SPC‑1 and SPC‑2) is maintained through evolutionary design. A device claiming SPC-3 compliance must support all mandatory primary commands and meet the conformance requirements in Annex B of the standard. Vendors often characterize their implementations as “SPC‑3 compliant” after passing the following test categories:

  • Command descriptor block parsing and validation.
  • Status and sense data formatting.
  • Mode and log page handling.
  • Task management functions (ABORT TASK, CLEAR TASK SET, etc.).
Compliance Benefit: Adopting SPC-3 as the base command set ensures interoperability across a wide range of initiators, operating systems, and storage fabrics, reducing integration costs and supporting multi‑vendor environments.

4. Compliance and Certification Notes

While no single global certification body exists for SCSI, the INCITS T10 Technical Committee maintains the standard and publishes technical corrections. Many storage vendors use industry‑standard test suites (e.g., the SCSI Test Suite developed by the Storage Networking Industry Association – SNIA) to validate SPC-3 compliance.

When designing a product to be marketed as “SPC‑3 compliant,” developers should:

  1. Thoroughly review Clause 4 (Device Model) and Clause 5 (Commands).
  2. Implement all mandatory commands with correct handling of CDB fields, status, and sense data.
  3. Test with multiple initiator types and verify queuing behavior under load.
  4. Monitor the T10 web site for proposed changes and project updates.

This article is current as of 2026. Although the SCSI standards continue to evolve (e.g., SPC‑5, SPC‑6), the core architecture established in SPC‑3 remains the baseline for modern SCSI implementations. Engineers working on storage controllers, HBAs, or solid‑state drives will find that SPC‑3 knowledge is indispensable for troubleshooting and ensuring backward compatibility.

Q: What is the difference between SPC-3 and earlier SPC versions?
A: SPC-3 primarily extends support for 32‑byte CDBs, introduces descriptor format sense data as the preferred format, adds the REPORT LUNS command for multi‑LU targets, and defines task management functions more rigorously. It also deprecates some legacy parameters and simplifies the device model for modern transports.
Q: Is CAN/CSA ISO/IEC 14776-362-07 identical to ISO/IEC 14776-362:2006?
A: Yes, the Canadian Standards Association adoption (CAN/CSA ISO/IEC 14776-362-07) is technically identical to the international ISO/IEC 14776-362:2006. It includes the same normative content and is published under the CSA banner for domestic recognition. No deviations or national variances apply.
Q: Do I need to implement all optional commands to claim SPC-3 compliance?
A: No. Compliance only requires that all mandatory commands listed in the standard are correctly implemented. Optional commands (e.g., LOG SENSE) must be supported only if the device claims the corresponding feature. However, if an optional command is implemented, it must follow the standard precisely to maintain interoperability.

📥 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 *