SPDK Target#
The SPDK target runs the user-space nvmf_tgt application bundled in
xNVMe’s SPDK subproject. The PCIe device is bound to the userspace driver
by xnvme-driver, attached to nvmf_tgt as Nvme0 through rpc.py, and
published as a TCP subsystem. The cijoe/scripts/nvme_target_start.py,
nvme_target_probe.py, and nvme_target_stop.py scripts drive this with
--provider spdk. They are wired into the dedicated
workflows/transports-tcp-spdk.yaml workflow whose three steps
(nvme_target_start, nvme_target_probe, nvme_target_stop) can be
selected individually.
Dev loop#
Run the demo workflow end-to-end:
cd cijoe
cijoe --config configs/debian-trixie-iommu_enabled.toml \
--output /tmp/spdk-up \
workflows/transports-tcp-spdk.yaml
This brings the target up, probes it from the initiator side, and tears it down. The captured commands and output are what populates the embedded report below. See the parent page for shared configuration and initiator usage.
When you want to hold the target up between iterations, the workflow
can be driven a step at a time
(cijoe ... transports-tcp-spdk.yaml nvme_target_start and ... nvme_target_stop), and the same logic is also reachable by invoking
cijoe/scripts/nvme_target_start.py directly. Those are cijoe
conveniences over the same underlying script.
Note
For additional documentation on the SPDK target, consult the SPDK documentation on SPDK-NVMe-oF.