From f17fe629242652615d1da1a845aed30471aec454 Mon Sep 17 00:00:00 2001 From: Michal Berger Date: Tue, 11 Oct 2022 13:25:13 +0200 Subject: [PATCH] test/xnvme: Use null_blk device instead of zram for the backend device zram doesn't support some of the uring-specific setup that xnvme may be using, in particular the IORING_SETUP_IOPOLL, so switch to something more common like null_blk module. For details see: https://github.com/spdk/spdk/issues/2708 Signed-off-by: Michal Berger Change-Id: I48b91ba356b4054433eb1835fa3e2708c8d2628c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14920 Tested-by: SPDK CI Jenkins Reviewed-by: Pawel Piatek Reviewed-by: Kamil Godzwon Reviewed-by: Karol Latecki Reviewed-by: Jim Harris Reviewed-by: Tomasz Zawadzki --- test/dd/common.sh | 9 +++++++++ test/nvme/xnvme/xnvme.sh | 31 ++++++++++++++++--------------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/test/dd/common.sh b/test/dd/common.sh index 2205f7a7e..738aacb25 100644 --- a/test/dd/common.sh +++ b/test/dd/common.sh @@ -186,3 +186,12 @@ set_zram_dev() { echo "$size" > "/sys/block/zram$id/disksize" } + +init_null_blk() { + [[ -e /sys/module/null_blk ]] || modprobe null_blk "$@" + return +} + +remove_null_blk() { + modprobe -r null_blk +} diff --git a/test/nvme/xnvme/xnvme.sh b/test/nvme/xnvme/xnvme.sh index 3f2ef9979..f0593093c 100755 --- a/test/nvme/xnvme/xnvme.sh +++ b/test/nvme/xnvme/xnvme.sh @@ -5,18 +5,20 @@ rootdir=$(readlink -f "$testdir/../../../") source "$rootdir/test/dd/common.sh" malloc_to_xnvme_copy() { - # Use zram for the xnvme backend - init_zram + # Use 1GB null_blk for the xnvme backend + init_null_blk gb=1 - local mbdev0=malloc0 mbdev0_b=1048576 mbdev0_bs=512 - local xnvme0=zram0 xnvme0_dev xnvme_io=() + local mbdev0=malloc0 mbdev0_bs=512 + local xnvme0=null0 xnvme0_dev xnvme_io=() local io xnvme_io+=(libaio) xnvme_io+=(io_uring) - xnvme0_dev=$(create_zram_dev) - set_zram_dev "$xnvme0_dev" 512M + # This always represents size of the device in 512B sectors + # so it should align nicely with the $mbdev0_bs. + mbdev0_b=$(< /sys/block/nullb0/size) + xnvme0_dev=/dev/nullb0 local -A method_bdev_malloc_create_0=( ["name"]=$mbdev0 @@ -26,7 +28,7 @@ malloc_to_xnvme_copy() { local -A method_bdev_xnvme_create_0=() method_bdev_xnvme_create_0["name"]=$xnvme0 - method_bdev_xnvme_create_0["filename"]="/dev/zram$xnvme0_dev" + method_bdev_xnvme_create_0["filename"]=$xnvme0_dev for io in "${xnvme_io[@]}"; do method_bdev_xnvme_create_0["io_mechanism"]="$io" @@ -42,25 +44,24 @@ malloc_to_xnvme_copy() { --json <(gen_conf) done - remove_zram_dev "$xnvme0_dev" + remove_null_blk } xnvme_bdevperf() { - # Use zram for the xnvme backend - init_zram + # Use 1GB null_blk for the xnvme backend + init_null_blk gb=1 - local xnvme0=zram0 xnvme0_dev xnvme_io=() + local xnvme0=null0 xnvme0_dev xnvme_io=() local io xnvme_io+=(libaio) xnvme_io+=(io_uring) - xnvme0_dev=$(create_zram_dev) - set_zram_dev "$xnvme0_dev" 512M + xnvme0_dev=/dev/nullb0 local -A method_bdev_xnvme_create_0=() method_bdev_xnvme_create_0["name"]=$xnvme0 - method_bdev_xnvme_create_0["filename"]="/dev/zram$xnvme0_dev" + method_bdev_xnvme_create_0["filename"]=$xnvme0_dev for io in "${xnvme_io[@]}"; do method_bdev_xnvme_create_0["io_mechanism"]="$io" @@ -73,7 +74,7 @@ xnvme_bdevperf() { -o 4096 done - remove_zram_dev "$xnvme0_dev" + remove_null_blk } run_test "xnvme_to_malloc_dd_copy" malloc_to_xnvme_copy