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:
FID-specific
Command-specific
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
[SPDM] Debug=True
MI
VDM Receive Gap - the maximum time, in milliseconds, to wait for the next MCTP packet of a multi-packet response over PCIe VDM.
A drive that is busy (for example, performing a secure erase) can stall part way through sending a large response. If the gap between packets exceeds this value the host stops listening, and the last packet it holds has no End Of Message bit set, which is reported as
MCTP error at packet N ... invalid response received.This value is a maximum wait, not a delay, so raising it costs nothing unless a response actually stalls. Set to 0 to leave the
vdmtool at its own built-in default.Only the receive direction is affected, and only the VDM transport. MCTP over SMBus/I3C is unchanged.
[MI] VDM Receive Gap = 500
- class MIConfig(vdm_receive_gap: int)
Settings for NVMe-MI commands issued out of band.
- 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.confvia the[ADP Override]section, but individual targets can opt out through theexcludelist 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.confhas no[ADP Override]section.[ADP Override] Enableis nottrue.The target number appears in the
[ADP Override] excludelist.
Otherwise it returns
Trueand ADP file checks are skipped for this target.bridge.targetis the target/controller number shown in the SANBlaze UI (for example, 100, 102, 105), andexcludeis a comma-separated list of those numbers.