This is a HTML-ification of Task state (task.state) and
the associated files in the task output directory.
Below is the doc section of the task.
Bring up the SPDK NVMe-over-TCP target, probe it, and tear it down. Suitable for developer use: invoke individual steps by name, e.g. ``cijoe workflows/transports-tcp-spdk.yaml nvme_target_start`` to bring up the target, and ``cijoe workflows/transports-tcp-spdk.yaml nvme_target_stop`` to tear it down. Running the workflow without selecting steps performs the full sequence (start, probe, stop) and is what docgen captures.
If a task step (script / run) or test produced any artifacts, then they are listed here.
This is the configuration (.config file) with any
variable-placeholders such as {{ local.env.HOME }} filled out.
build:
compiler:
bin: gcc
cijoe:
transport:
odus:
hostname: localhost
password: odus.321
port: 4200
username: odus
root:
hostname: localhost
password: root
port: 4200
username: root
devices:
- driver_attachment: kernel
labels:
- dev
- bdev
- nvm
- scc
- write_zeroes
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/nvme0n1
- driver_attachment: kernel
labels:
- dev
- cdev
- nvm
- scc
- write_zeroes
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng0n1
- driver_attachment: userspace
labels:
- dev
- pcie
- nvm
- scc
- write_zeroes
- ctrlr
- log_health_ns
- idfy_cs
nsid: 1
uri: '0000:01:00.0'
- driver_attachment: kernel
labels:
- dev
- bdev
- zns
- zrwa
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/nvme1n1
- driver_attachment: kernel
labels:
- dev
- cdev
- zns
- zrwa
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng1n1
- driver_attachment: userspace
labels:
- dev
- pcie
- zns
- zrwa
- log_health_ns
- idfy_cs
nsid: 1
uri: '0000:02:00.0'
- driver_attachment: kernel
labels:
- dev
- cdev
- kvs
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng2n1
- driver_attachment: userspace
labels:
- dev
- pcie
- kvs
- log_health_ns
- idfy_cs
nsid: 1
uri: '0000:03:00.0'
- driver_attachment: kernel
labels:
- dev
- bdev
- nvm
- scc
- write_zeroes
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/nvme3n1
- driver_attachment: kernel
labels:
- dev
- cdev
- nvm
- scc
- write_zeroes
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng3n1
- driver_attachment: userspace
labels:
- dev
- pcie
- nvm
- scc
- write_zeroes
- log_health_ns
- idfy_cs
nsid: 1
uri: '0000:04:00.0'
- driver_attachment: kernel
labels:
- dev
- bdev
- nvm
- scc
- large_mdts
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/nvme4n1
- driver_attachment: kernel
labels:
- dev
- cdev
- nvm
- scc
- large_mdts
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng4n1
- driver_attachment: userspace
labels:
- dev
- pcie
- nvm
- scc
- large_mdts
- log_health_ns
- idfy_cs
nsid: 1
uri: '0000:05:00.0'
- driver_attachment: kernel
labels:
- dev
- bdev
- nvm
- scc
- fdp
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/nvme5n1
- driver_attachment: kernel
labels:
- dev
- cdev
- nvm
- scc
- fdp
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng5n1
- driver_attachment: userspace
labels:
- dev
- pcie
- nvm
- scc
- fdp
- log_health_ns
- idfy_cs
nsid: 1
uri: '0000:06:00.0'
- driver_attachment: kernel
labels:
- dev
- bdev
- nvm
- pi1
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/nvme6n1
- driver_attachment: kernel
labels:
- dev
- cdev
- nvm
- pi1
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng6n1
- driver_attachment: userspace
labels:
- dev
- pcie
- nvm
- pi1
- log_health_ns
- idfy_cs
nsid: 1
uri: '0000:07:00.0'
- driver_attachment: kernel
labels:
- dev
- bdev
- nvm
- pi2
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/nvme7n1
- driver_attachment: kernel
labels:
- dev
- cdev
- nvm
- pi2
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng7n1
- driver_attachment: userspace
labels:
- dev
- pcie
- nvm
- pi2
- log_health_ns
- idfy_cs
nsid: 1
uri: '0000:08:00.0'
- driver_attachment: kernel
labels:
- dev
- bdev
- nvm
- pi3
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/nvme8n1
- driver_attachment: kernel
labels:
- dev
- cdev
- nvm
- pi3
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng8n1
- driver_attachment: userspace
labels:
- dev
- pcie
- nvm
- pi3
- log_health_ns
- idfy_cs
nsid: 1
uri: '0000:09:00.0'
- driver_attachment: kernel
labels:
- dev
- bdev
- nvm
- pi1_ex
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/nvme9n1
- driver_attachment: kernel
labels:
- dev
- cdev
- nvm
- pi1_ex
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng9n1
- driver_attachment: userspace
labels:
- dev
- pcie
- nvm
- pi1_ex
- log_health_ns
- idfy_cs
nsid: 1
uri: 0000:0a:00.0
- driver_attachment: kernel
labels:
- dev
- bdev
- nvm
- pi1_pif2
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/nvme10n1
- driver_attachment: kernel
labels:
- dev
- cdev
- nvm
- pi1_pif2
- log_health_ns
- idfy_cs
nsid: 1
uri: /dev/ng10n1
- driver_attachment: userspace
labels:
- dev
- pcie
- nvm
- pi1_pif2
- log_health_ns
- idfy_cs
nsid: 1
uri: 0000:0b:00.0
- driver_attachment: kernel
labels:
- ctrlr
- cdev
- log_health_ns
- idfy_cs
nsid: 0
uri: /dev/nvme0
- device_path: /dev/nvme3n1
driver_attachment: userspace
labels:
- dev
- fabrics
- nvm
- write_zeroes
- log_health_ns
- idfy_cs
nsid: 1
pcie_id: '0000:04:00.0'
subnqn: nqn.2019-08.org.qemu:beef0003
uri: 127.0.0.1:4420
- driver_attachment: kernel
labels:
- file
- log_health_ns
- idfy_cs
nsid: 1
uri: /tmp/xnvme-testfile.bin
- driver_attachment: kernel
labels:
- dev
- bdev
- nvm
- ramdisk
- write_zeroes
- log_health_ns
- idfy_cs
nsid: 1
uri: 2GB
fio:
bin: fio
engines:
io_uring:
type: builtin
io_uring_cmd:
type: builtin
libaio:
type: builtin
spdk_bdev:
path: /opt/aux/spdk_bdev
type: external_preload
spdk_nvme:
path: /opt/aux/spdk_nvme
type: external_preload
xnvme:
type: builtin
repository:
path: /root/git/fio
remote: https://github.com/axboe/fio.git
tag: fio-3.38
hugetlbfs:
mount_point: /mnt/huge
nr_hugepages: '1024'
kvssd:
binary: /github/home/guests/vfu_kvssd
socket: /tmp/vfu_kvssd.sock
url: https://github.com/safl/vfio-user-kvssd/releases/download/v0.1.11/vfu_kvssd-0.1.11-x86_64-linux
linux:
repository:
path: /github/home/git/linux
remote: https://github.com/torvalds/linux.git
tag: v6.12
os:
name: debian
version: trixie
qemu:
build:
prefix: /github/home/opt/qemu
default_guest: trixie_amd64
default_systemimage: debian-13-x86_64
guests:
trixie_amd64:
path: /github/home/guests/debian-trixie-amd64
system_args:
kwa:
accel: kvm
cpu: host
m: 6G
smp: 4
raw: '-M "type=q35,kernel_irqchip=split" -device "intel-iommu,pt=on,intremap=on,caching-mode=on" '
tcp_forward:
guest: 22
host: 4200
system_label: x86_64
img_bin: qemu-img
repository:
path: /github/home/git/qemu
remote: https://github.com/qemu/qemu.git
tag: v9.0.0
systems:
x86_64:
bin: qemu-system-x86_64
xnvme:
build:
type: debug
repository:
path: /github/home/git/xnvme
remote: https://github.com/xnvme/xnvme.git
sync:
branch: wip
remote_alias: guest
remote_path: /root/git/xnvme
Steps uses scripts. A description of the script used by
the current step is provided below. The description is extracted from the docstring
of the script and provided here in verbatim / as-is.
Bring up an NVMe TCP transport target
=====================================
Configure an NVMe target listening on a TCP transport. Two providers are
supported via ``--provider``:
* ``spdk`` (default): use the SPDK ``nvmf_tgt`` application driven through
``rpc.py`` to export a locally attached PCIe NVMe device.
* ``linux``: use the Linux kernel ``nvmet`` driver through configfs to
export an existing ``/dev/nvmeXn1``.
In both cases the device to export is read from the cijoe config entry
labelled ``fabrics`` (legacy label name).
Retargetable: True
{'description': '\n'
'Bring up an NVMe TCP transport target\n'
'=====================================\n'
'\n'
'Configure an NVMe target listening on a TCP transport. Two '
'providers are\n'
'supported via ``--provider``:\n'
'\n'
'* ``spdk`` (default): use the SPDK ``nvmf_tgt`` application '
'driven through\n'
' ``rpc.py`` to export a locally attached PCIe NVMe device.\n'
'* ``linux``: use the Linux kernel ``nvmet`` driver through '
'configfs to\n'
' export an existing ``/dev/nvmeXn1``.\n'
'\n'
'In both cases the device to export is read from the cijoe '
'config entry\n'
'labelled ``fabrics`` (legacy label name).\n'
'\n'
'Retargetable: True\n',
'extras': {'runlog': {'cmd_01': {'output': '',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_01.output'),
'state': {'begin': 1787919549.9052749,
'cmd': 'modprobe nvme_tcp',
'cwd': 'None',
'elapsed': 0.188493013381958,
'end': 1787919550.093768,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_01.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_01.state')},
'cmd_02': {'output': '0000:01:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:02:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:03:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:04:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:05:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:06:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:07:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:08:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:09:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:0a:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:0b:00.0 (1b36 0010): nvme -> '
'vfio-pci\n'
'0000:00:02.0 (1af4 1001): Active '
'mountpoints on /dev/vda, so not '
'binding\n',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_02.output'),
'state': {'begin': 1787919550.0944645,
'cmd': 'xnvme-driver',
'cwd': 'None',
'elapsed': 3.3345422744750977,
'end': 1787919553.4290068,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_02.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_02.state')},
'cmd_03': {'output': '',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_03.output'),
'state': {'begin': 1787919553.4298928,
'cmd': 'pkill -f nvmf_tgt || true',
'cwd': 'None',
'elapsed': 0.21132802963256836,
'end': 1787919553.6412208,
'err': -1,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_03.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_03.state')},
'cmd_04': {'output': 'make: Entering directory '
"'/root/git/xnvme/subprojects/spdk/app/nvmf_tgt'\n"
' CC nvmf_tgt/nvmf_main.o\n'
' LINK nvmf_tgt\n'
'make: Leaving directory '
"'/root/git/xnvme/subprojects/spdk/app/nvmf_tgt'\n",
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_04.output'),
'state': {'begin': 1787919553.6423068,
'cmd': 'test -x '
'/root/git/xnvme/subprojects/spdk/build/bin/nvmf_tgt '
'|| make -C '
'/root/git/xnvme/subprojects/spdk/app/nvmf_tgt',
'cwd': 'None',
'elapsed': 0.6741693019866943,
'end': 1787919554.316476,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_04.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_04.state')},
'cmd_05': {'output': '',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_05.output'),
'state': {'begin': 1787919554.3174152,
'cmd': '(nohup '
'/root/git/xnvme/subprojects/spdk/build/bin/nvmf_tgt '
'-m [1] > nvmf_tgt.out 2> '
'nvmf_tgt.err < /dev/null '
'&)',
'cwd': 'None',
'elapsed': 0.1472620964050293,
'end': 1787919554.4646773,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_05.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_05.state')},
'cmd_06': {'output': '',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_06.output'),
'state': {'begin': 1787919554.4656281,
'cmd': 'sleep 3',
'cwd': 'None',
'elapsed': 3.1583003997802734,
'end': 1787919557.6239285,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_06.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_06.state')},
'cmd_07': {'output': '',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_07.output'),
'state': {'begin': 1787919557.624762,
'cmd': '/root/git/xnvme/subprojects/spdk/scripts/rpc.py '
'nvmf_create_transport -t '
'tcp -u 16384 -m 8 -c 8192',
'cwd': 'None',
'elapsed': 0.2599337100982666,
'end': 1787919557.8846958,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_07.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_07.state')},
'cmd_08': {'output': 'Nvme0n1\n',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_08.output'),
'state': {'begin': 1787919557.88565,
'cmd': '/root/git/xnvme/subprojects/spdk/scripts/rpc.py '
'bdev_nvme_attach_controller '
'-b Nvme0 -t PCIe -a '
'0000:04:00.0 -U',
'cwd': 'None',
'elapsed': 0.5443539619445801,
'end': 1787919558.430004,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_08.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_08.state')},
'cmd_09': {'output': '',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_09.output'),
'state': {'begin': 1787919558.4309237,
'cmd': '/root/git/xnvme/subprojects/spdk/scripts/rpc.py '
'nvmf_create_subsystem '
'nqn.2019-08.org.qemu:beef0003 '
'-a -s SPDK00000000000001 '
'-d Controller1 -p',
'cwd': 'None',
'elapsed': 0.26757335662841797,
'end': 1787919558.698497,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_09.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_09.state')},
'cmd_10': {'output': '',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_10.output'),
'state': {'begin': 1787919558.6994562,
'cmd': '/root/git/xnvme/subprojects/spdk/scripts/rpc.py '
'nvmf_subsystem_add_ns '
'nqn.2019-08.org.qemu:beef0003 '
'Nvme0n1',
'cwd': 'None',
'elapsed': 0.25290989875793457,
'end': 1787919558.952366,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_10.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_10.state')},
'cmd_11': {'output': '',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_11.output'),
'state': {'begin': 1787919558.9532998,
'cmd': '/root/git/xnvme/subprojects/spdk/scripts/rpc.py '
'nvmf_subsystem_add_listener '
'nqn.2019-08.org.qemu:beef0003 '
'-t tcp -a 127.0.0.1 -s '
'4420 -f ipv4',
'cwd': 'None',
'elapsed': 0.2652311325073242,
'end': 1787919559.218531,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_11.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/001_nvme_target_start/cmd_11.state')}}},
'id': '001_nvme_target_start',
'name': 'nvme_target_start',
'nr': 1,
'status': {'elapsed': 9.317397356033325,
'failed': 0,
'passed': 1,
'skipped': 0,
'started': 1787919549.902141},
'uses': 'nvme_target_start',
'with': {'provider': 'spdk'}}
$ modprobe nvme_tcp
$ xnvme-driver
0000:01:00.0 (1b36 0010): nvme -> vfio-pci
0000:02:00.0 (1b36 0010): nvme -> vfio-pci
0000:03:00.0 (1b36 0010): nvme -> vfio-pci
0000:04:00.0 (1b36 0010): nvme -> vfio-pci
0000:05:00.0 (1b36 0010): nvme -> vfio-pci
0000:06:00.0 (1b36 0010): nvme -> vfio-pci
0000:07:00.0 (1b36 0010): nvme -> vfio-pci
0000:08:00.0 (1b36 0010): nvme -> vfio-pci
0000:09:00.0 (1b36 0010): nvme -> vfio-pci
0000:0a:00.0 (1b36 0010): nvme -> vfio-pci
0000:0b:00.0 (1b36 0010): nvme -> vfio-pci
0000:00:02.0 (1af4 1001): Active mountpoints on /dev/vda, so not binding
$ pkill -f nvmf_tgt || true
$ test -x /root/git/xnvme/subprojects/spdk/build/bin/nvmf_tgt || make -C /root/git/xnvme/subprojects/spdk/app/nvmf_tgt
make: Entering directory '/root/git/xnvme/subprojects/spdk/app/nvmf_tgt'
CC nvmf_tgt/nvmf_main.o
LINK nvmf_tgt
make: Leaving directory '/root/git/xnvme/subprojects/spdk/app/nvmf_tgt'
$ (nohup /root/git/xnvme/subprojects/spdk/build/bin/nvmf_tgt -m [1] > nvmf_tgt.out 2> nvmf_tgt.err < /dev/null &)
$ sleep 3
$ /root/git/xnvme/subprojects/spdk/scripts/rpc.py nvmf_create_transport -t tcp -u 16384 -m 8 -c 8192
$ /root/git/xnvme/subprojects/spdk/scripts/rpc.py bdev_nvme_attach_controller -b Nvme0 -t PCIe -a 0000:04:00.0 -U
Nvme0n1
$ /root/git/xnvme/subprojects/spdk/scripts/rpc.py nvmf_create_subsystem nqn.2019-08.org.qemu:beef0003 -a -s SPDK00000000000001 -d Controller1 -p
$ /root/git/xnvme/subprojects/spdk/scripts/rpc.py nvmf_subsystem_add_ns nqn.2019-08.org.qemu:beef0003 Nvme0n1
$ /root/git/xnvme/subprojects/spdk/scripts/rpc.py nvmf_subsystem_add_listener nqn.2019-08.org.qemu:beef0003 -t tcp -a 127.0.0.1 -s 4420 -f ipv4
Steps uses scripts. A description of the script used by
the current step is provided below. The description is extracted from the docstring
of the script and provided here in verbatim / as-is.
Probe a running NVMe TCP transport target
=========================================
Issue a discovery against a listener brought up by ``nvme_target_start`` and
print basic information about the exported namespace. Used as the check step
between ``nvme_target_start`` and ``nvme_target_stop`` in the transport demo
workflows.
Retargetable: True
{'description': '\n'
'Probe a running NVMe TCP transport target\n'
'=========================================\n'
'\n'
'Issue a discovery against a listener brought up by '
'``nvme_target_start`` and\n'
'print basic information about the exported namespace. Used as '
'the check step\n'
'between ``nvme_target_start`` and ``nvme_target_stop`` in the '
'transport demo\n'
'workflows.\n'
'\n'
'Retargetable: True\n',
'extras': {'runlog': {'cmd_01': {'output': '\n'
'Discovery Log Number of Records '
'1, Generation counter 1\n'
'=====Discovery Log Entry 0======\n'
'trtype: tcp\n'
'adrfam: ipv4\n'
'subtype: nvme subsystem\n'
'treq: not required\n'
'portid: 0\n'
'trsvcid: 4420\n'
'subnqn: '
'nqn.2019-08.org.qemu:beef0003\n'
'traddr: 127.0.0.1\n'
'eflags: none\n'
'sectype: none\n',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_01.output'),
'state': {'begin': 1787919559.223116,
'cmd': 'nvme discover -t tcp -a '
'127.0.0.1 -s 4420',
'cwd': 'None',
'elapsed': 0.20876479148864746,
'end': 1787919559.4318807,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_01.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_01.state')},
'cmd_02': {'output': 'xnvme_cli_enumeration:\n'
" - {uri: '127.0.0.1:4420', "
'dtype: 0x2, nsid: 0x1, csi: 0x0, '
"kernel_driver: '', subnqn: "
"'nqn.2019-08.org.qemu:beef0003'}\n",
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_02.output'),
'state': {'begin': 1787919559.432715,
'cmd': 'xnvme enum --uri '
'127.0.0.1:4420',
'cwd': 'None',
'elapsed': 0.4925038814544678,
'end': 1787919559.9252188,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_02.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_02.state')},
'cmd_03': {'output': 'xnvme_dev:\n'
' xnvme_ident:\n'
" uri: '127.0.0.1:4420'\n"
' dtype: 0x2\n'
' nsid: 0x1\n'
' csi: 0x0\n'
" kernel_driver: ''\n"
' subnqn: '
"'nqn.2019-08.org.qemu:beef0003'\n"
' xnvme_be:\n'
" dev: {id: 'spdk'}\n"
" admin: {id: 'spdk'}\n"
" sync: {id: 'spdk'}\n"
" async: {id: 'spdk'}\n"
" mem: {id: 'spdk'}\n"
" attr: {name: 'spdk', descr: "
"'SPDK userspace NVMe driver', "
'caps: 0x1e0}\n'
' xnvme_opts:\n'
" be: 'spdk'\n"
" mem: 'spdk'\n"
" dev: 'linux'\n"
" admin: 'spdk'\n"
" sync: 'spdk'\n"
" async: 'spdk'\n"
' xnvme_geo:\n'
' type: XNVME_GEO_CONVENTIONAL\n'
' npugrp: 1\n'
' npunit: 1\n'
' nzone: 1\n'
' nsect: 2097152\n'
' nbytes: 4096\n'
' nbytes_oob: 0\n'
' tbytes: 8589934592\n'
' mdts_nbytes: 131072\n'
' lba_nbytes: 4096\n'
' lba_extended: 0\n'
' ssw: 12\n'
' pi_type: 0\n'
' pi_loc: 0\n'
' pi_format: 0\n',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_03.output'),
'state': {'begin': 1787919559.9260597,
'cmd': 'xnvme info 127.0.0.1:4420 '
'--subnqn '
'nqn.2019-08.org.qemu:beef0003',
'cwd': 'None',
'elapsed': 0.4892127513885498,
'end': 1787919560.4152725,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_03.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_03.state')},
'cmd_04': {'output': 'Running xnvmeperf with '
'arguments:\n'
'- Devices: [127.0.0.1:4420] '
'(total: 1)\n'
'- io pattern: randread\n'
'- queues per device: 1\n'
'- queue depth: 32\n'
'- io size: 4096\n'
'- runtime: 5\n'
'- CPUs: [2] (total: 1)\n'
'- host_heap_size: 16781312 bytes\n'
'\n'
'====================================================================\n'
' xnvmeperf (elapsed: 5.00s)\n'
'====================================================================\n'
' Device '
'CPUs IOPS MiB/s '
'Failed\n'
' 127.0.0.1:4420 '
'2 59853.62 233.80 '
'0\n'
'--------------------------------------------------------------------\n'
' '
'Total: '
'59853.62 233.80 0\n'
'====================================================================\n',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_04.output'),
'state': {'begin': 1787919560.416149,
'cmd': 'xnvmeperf run '
'127.0.0.1:4420 --subnqn '
'nqn.2019-08.org.qemu:beef0003 '
'--iopattern randread '
'--iosize 4096 --qdepth 32 '
'--nqueues 1 --runtime 5 '
'--cpumask 0x4',
'cwd': 'None',
'elapsed': 5.463061571121216,
'end': 1787919565.8792105,
'err': 0,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_04.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/002_nvme_target_probe/cmd_04.state')}}},
'id': '002_nvme_target_probe',
'name': 'nvme_target_probe',
'nr': 2,
'status': {'elapsed': 6.660615921020508,
'failed': 0,
'passed': 1,
'skipped': 0,
'started': 1787919559.2195504},
'uses': 'nvme_target_probe',
'with': {'provider': 'spdk'}}
$ nvme discover -t tcp -a 127.0.0.1 -s 4420
Discovery Log Number of Records 1, Generation counter 1
=====Discovery Log Entry 0======
trtype: tcp
adrfam: ipv4
subtype: nvme subsystem
treq: not required
portid: 0
trsvcid: 4420
subnqn: nqn.2019-08.org.qemu:beef0003
traddr: 127.0.0.1
eflags: none
sectype: none
$ xnvme enum --uri 127.0.0.1:4420
xnvme_cli_enumeration:
- {uri: '127.0.0.1:4420', dtype: 0x2, nsid: 0x1, csi: 0x0, kernel_driver: '', subnqn: 'nqn.2019-08.org.qemu:beef0003'}
$ xnvme info 127.0.0.1:4420 --subnqn nqn.2019-08.org.qemu:beef0003
xnvme_dev:
xnvme_ident:
uri: '127.0.0.1:4420'
dtype: 0x2
nsid: 0x1
csi: 0x0
kernel_driver: ''
subnqn: 'nqn.2019-08.org.qemu:beef0003'
xnvme_be:
dev: {id: 'spdk'}
admin: {id: 'spdk'}
sync: {id: 'spdk'}
async: {id: 'spdk'}
mem: {id: 'spdk'}
attr: {name: 'spdk', descr: 'SPDK userspace NVMe driver', caps: 0x1e0}
xnvme_opts:
be: 'spdk'
mem: 'spdk'
dev: 'linux'
admin: 'spdk'
sync: 'spdk'
async: 'spdk'
xnvme_geo:
type: XNVME_GEO_CONVENTIONAL
npugrp: 1
npunit: 1
nzone: 1
nsect: 2097152
nbytes: 4096
nbytes_oob: 0
tbytes: 8589934592
mdts_nbytes: 131072
lba_nbytes: 4096
lba_extended: 0
ssw: 12
pi_type: 0
pi_loc: 0
pi_format: 0
$ xnvmeperf run 127.0.0.1:4420 --subnqn nqn.2019-08.org.qemu:beef0003 --iopattern randread --iosize 4096 --qdepth 32 --nqueues 1 --runtime 5 --cpumask 0x4
Running xnvmeperf with arguments:
- Devices: [127.0.0.1:4420] (total: 1)
- io pattern: randread
- queues per device: 1
- queue depth: 32
- io size: 4096
- runtime: 5
- CPUs: [2] (total: 1)
- host_heap_size: 16781312 bytes
====================================================================
xnvmeperf (elapsed: 5.00s)
====================================================================
Device CPUs IOPS MiB/s Failed
127.0.0.1:4420 2 59853.62 233.80 0
--------------------------------------------------------------------
Total: 59853.62 233.80 0
====================================================================
Steps uses scripts. A description of the script used by
the current step is provided below. The description is extracted from the docstring
of the script and provided here in verbatim / as-is.
Tear down an NVMe TCP transport target
======================================
Tear down whichever NVMe TCP target was set up by ``nvme_target_start``.
Two providers are supported via ``--provider``:
* ``spdk`` (default): stop the SPDK ``nvmf_tgt`` process.
* ``linux``: remove the Linux kernel ``nvmet`` configfs entries.
Both providers are safe to invoke when the target is already down.
Retargetable: True
{'description': '\n'
'Tear down an NVMe TCP transport target\n'
'======================================\n'
'\n'
'Tear down whichever NVMe TCP target was set up by '
'``nvme_target_start``.\n'
'Two providers are supported via ``--provider``:\n'
'\n'
'* ``spdk`` (default): stop the SPDK ``nvmf_tgt`` process.\n'
'* ``linux``: remove the Linux kernel ``nvmet`` configfs '
'entries.\n'
'\n'
'Both providers are safe to invoke when the target is already '
'down.\n'
'\n'
'Retargetable: True\n',
'extras': {'runlog': {'cmd_01': {'output': '48553\n48685\n',
'output_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/003_nvme_target_stop/cmd_01.output'),
'state': {'begin': 1787919565.883083,
'cmd': 'pgrep -f nvmf_tgt && pkill '
'-f nvmf_tgt; true',
'cwd': 'None',
'elapsed': 0.1873006820678711,
'end': 1787919566.0703838,
'err': -1,
'is_done': True,
'output_dpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/003_nvme_target_stop',
'output_fpath': '/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/003_nvme_target_stop/cmd_01.output'},
'state_path': PosixPath('/__w/xnvme/xnvme/cijoe/cijoe-output-transports-spdk/003_nvme_target_stop/cmd_01.state')}}},
'id': '003_nvme_target_stop',
'name': 'nvme_target_stop',
'nr': 3,
'status': {'elapsed': 0.1911299228668213,
'failed': 0,
'passed': 1,
'skipped': 0,
'started': 1787919565.8801808},
'uses': 'nvme_target_stop',
'with': {'provider': 'spdk'}}