Commit 46fd068f authored by Michal Berger's avatar Michal Berger Committed by Konrad Sztyber
Browse files

test/nvme/xnvme: Add io_uring_cmd



This requires some extra dance since it seems it can work only on top
of generic nvme char devices.

Change-Id: I84a489b64bada9335a30f3db185edba3733b7902
Signed-off-by: default avatarMichal Berger <michal.berger@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25308


Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarKarl Bonde Torp <k.torp@samsung.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
parent 4d3e9954
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ scan_nvme_ctrls() {
		ctrl_dev=${ctrl##*/}
		nvme_get "$ctrl_dev" id-ctrl "/dev/$ctrl_dev"
		local -n _ctrl_ns=${ctrl_dev}_ns
		for ns in "$ctrl/${ctrl##*/}n"*; do
		for ns in "$ctrl/"@("ng${ctrl##*nvme}"|"${ctrl##*/}n")*; do
			[[ -e $ns ]] || continue
			ns_dev=${ns##*/}
			nvme_get "$ns_dev" id-ns "/dev/$ns_dev"
+28 −2
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ testdir=$(readlink -f "$(dirname "$0")")
rootdir=$(readlink -f "$testdir/../../../")
# Hook into dd suite to perform some basic IO tests
source "$rootdir/test/dd/common.sh"
source "$rootdir/test/common/nvme/functions.sh"

malloc_to_xnvme_copy() {
	# Use 1GB null_blk for the xnvme backend
@@ -61,6 +62,7 @@ xnvme_bdevperf() {

	xnvme_io+=(libaio)
	xnvme_io+=(io_uring)
	xnvme_io+=(io_uring_cmd)

	xnvme0_dev=/dev/nullb0

@@ -69,6 +71,12 @@ xnvme_bdevperf() {
	method_bdev_xnvme_create_0["filename"]=$xnvme0_dev

	for io in "${xnvme_io[@]}"; do
		if [[ $io == io_uring_cmd ]]; then
			# This can work only with generic nvme devices (char) so
			# fail hard if it's not around.
			[[ -n ${ng0n1[*]} ]]
			method_bdev_xnvme_create_0["filename"]=/dev/ng0n1
		fi
		method_bdev_xnvme_create_0["io_mechanism"]="$io"
		local -n io_pattern_ref=$io
		for io_pattern in "${io_pattern_ref[@]}"; do
@@ -94,6 +102,7 @@ xnvme_fio_plugin() {

	xnvme_io+=(libaio)
	xnvme_io+=(io_uring)
	xnvme_io+=(io_uring_cmd)

	xnvme0_dev=/dev/nullb0

@@ -103,8 +112,14 @@ xnvme_fio_plugin() {
	method_bdev_xnvme_create_0["conserve_cpu"]=true

	for io in "${xnvme_io[@]}"; do
		if [[ $io == io_uring_cmd ]]; then
			# This can work only with generic nvme devices (char) so
			# fail hard if it's not around.
			[[ -n ${ng0n1[*]} ]]
			method_bdev_xnvme_create_0["filename"]=/dev/ng0n1
		fi
		method_bdev_xnvme_create_0["io_mechanism"]="$io"
		local -n io_pattern_ref=$io
		local -n io_pattern_ref=${io}_fio
		for io_pattern in "${io_pattern_ref[@]}"; do
			fio_bdev \
				--ioengine=spdk_bdev \
@@ -172,9 +187,20 @@ rpc_xnvme() {
trap 'killprocess "$spdk_tgt"' EXIT

# Prep global refs for io_pattern supported per io_mechanism
libaio=(randread randwrite) io_uring=(randread randwrite)
libaio=(randread randwrite)
io_uring=(randread randwrite)
io_uring_cmd=(randread randwrite unmap write_zeroes)
libaio_fio=("${libaio[@]}")
io_uring_fio=("${io_uring[@]}")
io_uring_cmd_fio=("${io_uring_fio[@]}")

"$rootdir/scripts/setup.sh" reset

scan_nvme_ctrls

run_test "xnvme_rpc" xnvme_rpc
run_test "xnvme_to_malloc_dd_copy" malloc_to_xnvme_copy
run_test "xnvme_bdevperf" xnvme_bdevperf
run_test "xnvme_fio_plugin" xnvme_fio_plugin

"$rootdir/scripts/setup.sh"