From 1500eb7b11320e607485c26d01ede43820570ea0 Mon Sep 17 00:00:00 2001 From: Maciej Szwed Date: Tue, 11 Jun 2019 15:04:06 +0200 Subject: [PATCH] nvme/tests: Enable testing multinamespace NVMe This patch removes restriction for using only first namespace when testing nvme cli and includes other namespaces than first one in nvme fio tests. Signed-off-by: Maciej Szwed Change-Id: I047f85520b441313cf1788c06d8f4c7d7ef4e162 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/457643 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto --- test/nvme/nvme.sh | 31 ++++++++++++++++++------------- test/nvme/spdk_nvme_cli.sh | 29 ++++++++++++++--------------- 2 files changed, 32 insertions(+), 28 deletions(-) diff --git a/test/nvme/nvme.sh b/test/nvme/nvme.sh index 2a5abeff3..a74b882ad 100755 --- a/test/nvme/nvme.sh +++ b/test/nvme/nvme.sh @@ -6,7 +6,8 @@ source $rootdir/scripts/common.sh source $rootdir/test/common/autotest_common.sh function get_nvme_name_from_bdf { - lsblk -d --output NAME + blkname=() + nvme_devs=$(lsblk -d --output NAME | grep "^nvme") || true if [ -z "$nvme_devs" ]; then return @@ -18,10 +19,11 @@ function get_nvme_name_from_bdf { fi bdf=$(basename "$link_name") if [ "$bdf" = "$1" ]; then - eval "$2=$dev" - return + blkname+=($dev) fi done + + printf '%s\n' "${blkname[@]}" } timing_enter nvme @@ -40,15 +42,16 @@ if [ $(uname) = Linux ]; then # note: more work probably needs to be done to properly handle devices with multiple # namespaces for bdf in $(iter_pci_class_code 01 08 02); do - get_nvme_name_from_bdf "$bdf" blkname - if [ "$blkname" != "" ]; then - mountpoints=$(lsblk /dev/$blkname --output MOUNTPOINT -n | wc -w) - if [ "$mountpoints" = "0" ]; then - break - else - blkname='' + for blkname in $(get_nvme_name_from_bdf $bdf); do + if [ "$blkname" != "" ]; then + mountpoints=$(lsblk /dev/$blkname --output MOUNTPOINT -n | wc -w) + if [ "$mountpoints" = "0" ]; then + break + else + blkname='' + fi fi - fi + done done # if we found an NVMe block device without an active mountpoint, create and mount @@ -164,8 +167,10 @@ if [ -d /usr/src/fio ]; then timing_enter fio_plugin PLUGIN_DIR=$rootdir/examples/nvme/fio_plugin for bdf in $(iter_pci_class_code 01 08 02); do - fio_nvme $PLUGIN_DIR/example_config.fio --filename="trtype=PCIe traddr=${bdf//:/.} ns=1" - report_test_completion "bdev_fio" + for blkname in $(get_nvme_name_from_bdf $bdf); do + fio_nvme $PLUGIN_DIR/example_config.fio --filename="trtype=PCIe traddr=${bdf//:/.} ns=${blkname##*n}" + report_test_completion "bdev_fio" + done done timing_exit fio_plugin fi diff --git a/test/nvme/spdk_nvme_cli.sh b/test/nvme/spdk_nvme_cli.sh index 80ffff349..57e21ffdc 100755 --- a/test/nvme/spdk_nvme_cli.sh +++ b/test/nvme/spdk_nvme_cli.sh @@ -28,25 +28,24 @@ fi rm -f "$spdk_nvme_cli/spdk" ln -sf "$rootdir" "$spdk_nvme_cli/spdk" -bdfs=$(iter_pci_class_code 01 08 02) -bdf=$(echo $bdfs|awk '{ print $1 }') - cd $spdk_nvme_cli make clean && make -j$(nproc) LDFLAGS="$(make -s -C $spdk_nvme_cli/spdk ldflags)" sed -i 's/spdk=0/spdk=1/g' spdk.conf sed -i 's/shm_id=.*/shm_id=0/g' spdk.conf -./nvme list -./nvme id-ctrl $bdf -./nvme list-ctrl $bdf -./nvme get-ns-id $bdf -./nvme id-ns $bdf -./nvme fw-log $bdf -./nvme smart-log $bdf -./nvme error-log $bdf -./nvme list-ns $bdf -n 1 -./nvme get-feature $bdf -n 1 -f 1 -s 1 -l 100 -./nvme get-log $bdf -n 1 -i 1 -l 100 -./nvme reset $bdf +for bdf in $(iter_pci_class_code 01 08 02); do + ./nvme list + ./nvme id-ctrl $bdf + ./nvme list-ctrl $bdf + ./nvme get-ns-id $bdf + ./nvme id-ns $bdf + ./nvme fw-log $bdf + ./nvme smart-log $bdf + ./nvme error-log $bdf + ./nvme list-ns $bdf -n 1 + ./nvme get-feature $bdf -f 1 -s 1 -l 100 + ./nvme get-log $bdf -i 1 -l 100 + ./nvme reset $bdf +done if [ $(uname) = Linux ]; then trap - SIGINT SIGTERM EXIT kill_stub