Global Config

Modify /virtualun/python_usr/python.conf to configure. Use any of the following sections:

Behavior

  • Skip Cleanup: prevent the cleanup of the NVMe device after the test is complete.

    [Behavior]
    Skip Cleanup = True
    

    Warning

    This might result in a drive in a strange state that will need to be recovered by the user.

  • Fail on Warning: treat a warning as a script failure. Useful when debugging.

    [Behavior]
    Fail on Warning = True
    

Hooks

Hook Configuration allows for the execution of scripts on test action.

  • On Error: run a script when a test error occurs.

    [Hooks]
    On Error = /path/to/script.sh
    

Timeouts

Specify a timeout value, in seconds, for NVMe commands. A timeout is the maximum amount of time the host will wait for a command to complete, before it is considered failed.

Timeouts can be specified for:

  • All NVMe Admin or I/O Command Set commands

  • Specific NVMe commands (e.g. FormatNVM, SetFeatures)

  • FID-specific (e.g. SetFeatures.0x1D)

These settings may be combined to create a custom timeout configuration.

If no timeout is specified, the values found in /sys/module/nvme_core/parameters are used (system default is 10s).

Timeouts are prioritized in the following order:

  1. FID-specific

  2. Command-specific

  3. Admin or I/O command set specific

Examples

Read receives a 15 second timeout, and Admin commands receive a 30 second timeout.

[Timeouts]
admin = 30
Read = 15

Same as previous example, but GetFeatures receives a 45 second timeout, taking precedence over the 30-second Admin timeout.

[Timeouts]
admin = 30
Read = 15
GetFeatures = 45

All other non-FID 02h GetFeatures calls receive a 45 second timeout, and Admin commands receive a 30 second timeout.

[Timeouts]
admin = 30
Read = 15
GetFeatures = 45
GetFeatures.0x02 = 90

Note

Command strings are case-sensitive. Use the exact casing shown here and in the sections below. (e.g. GetFeatures, not getfeatures or Get Features).

admin

Set a default timeout for all NVMe Admin Command Set commands.

See Supported NVMe Admin commands below for a list of NVMe Admin commands affected by this setting.

Example:

[Timeouts]
admin = 30

io

Set a default timeout for all NVMe I/O Command Set commands.

See Supported NVMe I/O commands below for a list of NVMe I/O commands affected by this setting.

Example:

[Timeouts]
io = 60

Command-Specific Overrides

Set a timeout for a specific NVMe command.

Note

Command-specific timeouts take precedence over admin and io settings. (e.g. Read = 15 takes precedence over io = 60), etc.

Supported NVMe Admin commands include:

  • GetFeatures

  • SetFeatures

  • GetLogPage

  • Identify

  • DirectiveReceive

  • DirectiveSend

  • IOManagementReceive

  • IOManagementSend

  • FormatNVM

  • FirmwareCommit

  • FirmwareDownload

  • SanitizeNVM

  • SecuritySend

  • SecurityReceive

  • NamespaceManagement

  • NamespaceAttachment

  • CreateCQ

  • CreateSQ

  • DeleteCQ

  • DeleteSQ

Supported NVMe I/O commands include:

  • Read

  • Write

  • WriteUncorrectable

  • WriteZeroes

  • DatasetManagement

  • Flush

Example:

[Timeouts]
Read = 15
Write = 20
WriteUncorrectable = 25
WriteZeroes = 30
DatasetManagement = 35
NamespaceManagement = 40
Flush = 45

Feature-Specific Overrides (Get / Set Features)

Set a timeout for a specific Feature Identifier on GetFeatures or SetFeatures. The key format is <Command>.<FID> where FID is the Feature Identifier in hexadecimal (with 0x prefix) or decimal.

Note

Feature-specific timeouts take precedence over any command-specific or category-wide timeout.

Example – give SetFeatures with FID=1Dh a longer 120 second timeout than other SetFeatures calls, which receive a 10 second timeout.

[Timeouts] SetFeatures = 10 SetFeatures.0x1D = 120

Extra Checks

  • Verify Max Lane Width: Check lane width at the start and end of a script, and before starting any workloads.

    Note

    Valid settings are ‘ignore’, ‘notify’, ‘warn’, ‘error’

    [Extra Checks]
    Verify Max Lane Width = notify
    
  • Verify Max Link Speed: Check link width at the start and end of a script, and before starting any workloads.

    Note

    Valid settings are ‘ignore’, ‘notify’, ‘warn’, ‘error’

    [Extra Checks]
    Verify Max Lane Width = notify
    

Fail on Warning

Error

Deprecated. Use Behavior: Fail on Warning instead.

Treat a warning as a script failure. Useful when debugging.

  • Enable - Valid settings are True and False

[Fail on Warning]
Enable = True

SPDM

  • Debug - Turn on extra debug logging for SPDM conformance scripts

    Valid settings are True and False

class OCPConfig(adp_override_enabled: 'bool')
static adp_override_en(bridge)

Return True when ADP Override should be used for the given target.

ADP Override is resolved per target (per controller). The feature is enabled globally in /virtualun/python_usr/ocp.conf via the [ADP Override] section, but individual targets can opt out through the exclude list so they keep using their ADP files.

It returns False (ADP files are used as normal) when any of the following is true:

  • The bridge is not a DSSD/OCP target – override only applies to OCP.

  • ocp.conf has no [ADP Override] section.

  • [ADP Override] Enable is not true.

  • The target number appears in the [ADP Override] exclude list.

Otherwise it returns True and ADP file checks are skipped for this target.

bridge.target is the target/controller number shown in the SANBlaze UI (for example, 100, 102, 105), and exclude is a comma-separated list of those numbers.