Share via


SCSI Compliance Test (LOGO)

This test verifies that a block storage device (RAID adapter or disk target) that is supported by the operating system fully complies with the SCSI standards described in the SCSI-3 Primary Commands-2 (SPC-2) or later, and SCSI Block Commands (SBC) or later specifications.

Note  

For more information about these specifications, visit the Technical Committee T10 SCSI Storage Interfaces website.

 

Ensuring that the block device and the operating system maintain compliance with these standards makes for a more robust and reliable system. Although some block devices might not be using a SCSI transport, the operating system communicates with them using SCSI commands (the exception is individual ATA disk drives that are not part of a RAID set).

The test uses SCSI pass-through requests (IOCTL_SCSI_PASS_THROUGH) to construct and send SCSI command descriptor blocks (CDBs) to the device. The test evaluates the results of the commands to verify compliance.

Warning  

If you are running this test as a part of a Storage RAID Hardware-based RAID (Storage Array) submission, and your storage array supports Multipath I/O (MPIO), configure your MPIO to use Fail-Over Only policy, and set the target storage disk to use the same active path for all MPIO-capable disks.

If you are running this test as a part of a Storage RAID Hardware-based RAID (Storage Array) submission, make sure that LUN0 is configured as the largest size non-boot LUN.

 

Test details

Associated requirements

Device.Storage.Controller.Raid.BasicFunction Device.Storage.Hd.ScsiProtocol.ReferenceSpec Device.Storage.Hd.ScsiProtocol.SamCompliance Device.Storage.Hd.ScsiProtocol.SpcCompliance

See the device hardware requirements.

Platforms

Windows 7 (x64) Windows 7 (x86) Windows 8 (x64) Windows 8 (x86) Windows Server 2012 (x64) Windows Server 2008 R2 (x64) Windows Server 2008 x64 Windows Server 2008 x86Windows 8.1 x64Windows 8.1 x86Windows Server 2012 R2

Expected run time

~5 minutes

Categories

Certification Functional

Type

Automated

 

Running the test

Before you run the test, complete the test setup as described in the test requirements: Storage Adapter or Controller Testing Overview.

Troubleshooting

For troubleshooting information, see Troubleshooting Device.Storage Testing.

The test writes the results to the log files Scsicompliance.log.xml and Scsicompliance.log.txt. Use the results to determine:

  • If a device is compliant with the SCSI specification.

  • The optional SCSI commands that are supported by a device.

To pass, the SCSI device must support every mandatory command and must be fully compliant with those commands. Each command has a different threshold for pass or fail, and the expectations are specified explicitly in the test and in the log file.

Optional commands are also tested. If a device supports the optional commands and the commands are found to be non-compliant, the test fails. If the device does not support optional commands, the test passes.

Note  

Errors from this test occur via issues identified in the log file and in stop errors produced through stressing the driver under test.

 

More information

This test will focus on measuring the SCSI device compliance on the Windows Operating System. The goal is two-fold - to ensure that SCSI devices supported on the Windows OS fully and completely adhere to the SCSI specifications set forth in SPC, SPC-2, and SBC, as well as to allow us and our partners to fully respect and comply with these standards. Maintaining compliance will lead to a stronger and more reliable system overall.

The test uses SCSI pass-through requests (IOCTL_SCSI_PASS_THROUGH) to construct and send SCSI command descriptor blocks (CDB) to the device. The test evaluates the results of the commands to verify compliance.

Warning  

If you are running this test as a part of Storage RAID Hardware-based RAID (Storage Array) submission, and your storage array supports Multi-Path I/O (MPIO), you must configure your MPIO to use Fail-Over Only policy, and set the target storage disk to use the same active path for all MPIO-capable disks.

 

Note  

If you are running this test as a part of a Storage RAID Hardware-based RAID (Storage Array) submission, please make sure that LUN0 is configured as the largest size non-boot LUN.

 

The SCSI Compliance test consists of several phases: setup, device enumeration, execution, and results reporting. The test operates in two modes:

  • A non-destructive test run against one or more devices.

  • A destructive (allows WRITE commands) test that targets one or more specified disks.

A number of tests are performed for each command to test compliance. The program stores the test results in a matrix, indicating the results for each command on each device. When the test is completed, a summary report of the results is generated. For debugging purposes, the level of output verbosity can be increased when the test is run interactively. It is designed to provide complete information for the submitter so that they can address command issues.

Functionality testing

The test sends the following commands to the device. The test runs a variety of tests for each command descriptor block (CDB) to ensure full and complete compliance. Commands that are indicated as optional must still perform correctly if a vendor chooses to implement the command. Each command may have many subtests.

  • INQUIRY

  • REQUEST SENSE

  • MODE SENSE (6)

  • MODE SENSE (10) [Optional, except if MODE SENSE (6) can return > 255 bytes of information]

  • MODE SELECT (6) [Optional]

  • MODE SELECT (10) [Optional]

  • RESERVE (6) [prior to Vista only]

  • RELEASE (6) [prior to Vista only]

  • READ CAPACITY

  • LONGLBA Support [Optional]

  • READ (6) [Optional]

  • READ (10)

  • READ (16) [Optional]

  • WRITE (6) [Optional]

  • WRITE (10)

  • WRITE (10) with FUA bit

  • WRITE (16) [Optional]

  • WRITE (16) with FUA bit [Optional]

  • REPORT LUNS [required except for PCI RAID adapters]

  • PERSISTENT RESERVE IN / OUT

Robustness and reliability testing

To validate robustness and reliability, the test completes the following tasks:

  • Checks for valid return codes for each IOCTL_SCSI_PASS_THROUGH request.

  • Checks adherence to data buffer length.

  • If the buffer size is insufficient, the test verifies that the IOCTL returns with the correct required length.

  • Verifies that non-destructive tests do not change any system configuration or data.

  • Verifies that repeated calls return the same or similar data.

Parameters

Parameter Description

LoggingVerbosity

Detail of logging. Levels are cumulative. 0 = Assertions and results. 1 = Details. 2 = CDBs , data, and sense info. 3 = Debug and detailed Mode page information. 4 = Memory usage

Default value: 1

 

Command syntax

Command Description

ScsiComplianceTest.exe

The options for the test are listed below

-a

Enables automated testing.

-m

Enables manual testing. Provides options to test specific SCSI commands on specific devices.

--w

Tests destructive SCSI commands.

-c

Tests multi-initiator SCSI commands.

-d

Enables a user to specify individual devices.

-v

Controls the verbosity level of the log file results:

  • 0 = List assertions tested and results.

  • 1 = Show assertion details (default).

  • 2 = Show CDBs sent to device, data, and sense info returned.

  • 3 = Shows test debug spew and detailed Mode page information.

  • 4 = Shows test memory usage logging.

-iscsi

Tests an iSCSI target.

-full

Specify that the write tests should also be run.

 

Note  

For command line help for this test binary, type /h.

 

File list

File Location

Scsicompliancetest.exe

<[testbinroot]>\nttest\driverstest\storage\wdk\

 

 

 

Send comments about this topic to Microsoft