From 87eb023afe180e21b40e8aa84f1bba1c79475686 Mon Sep 17 00:00:00 2001 From: Ziye Yang Date: Tue, 6 Dec 2016 09:45:19 +0800 Subject: [PATCH] nvme/rdma: Add identification test for kernel nvmf target Change-Id: Ibcfdf1a451f88e186ae328560c21480c81dc44b3 Signed-off-by: Ziye Yang --- autotest.sh | 1 + test/nvmf/host/identify_kernel_nvmf.sh | 71 ++++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100755 test/nvmf/host/identify_kernel_nvmf.sh diff --git a/autotest.sh b/autotest.sh index a705d835f..2b0abe220 100755 --- a/autotest.sh +++ b/autotest.sh @@ -125,6 +125,7 @@ timing_enter host run_test test/nvmf/host/identify.sh run_test test/nvmf/host/perf.sh +run_test test/nvmf/host/identify_kernel_nvmf.sh timing_exit host diff --git a/test/nvmf/host/identify_kernel_nvmf.sh b/test/nvmf/host/identify_kernel_nvmf.sh new file mode 100755 index 000000000..12024047f --- /dev/null +++ b/test/nvmf/host/identify_kernel_nvmf.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +testdir=$(readlink -f $(dirname $0)) +rootdir=$(readlink -f $testdir/../../..) +source $rootdir/scripts/autotest_common.sh +source $rootdir/test/nvmf/common.sh + +set -e + +if ! rdma_nic_available; then + echo "no NIC for nvmf test" + exit 0 +fi + +timing_enter identify_kernel_nvmf_tgt + +subsystemname=nqn.2016-06.io.spdk:testnqn + +modprobe null_blk nr_devices=1 +modprobe nvmet +modprobe nvmet-rdma + +if [ ! -d /sys/kernel/config/nvmet/subsystems/$subsystemname ]; then + mkdir /sys/kernel/config/nvmet/subsystems/$subsystemname +fi +echo 1 > /sys/kernel/config/nvmet/subsystems/$subsystemname/attr_allow_any_host + +if [ ! -d /sys/kernel/config/nvmet/subsystems/$subsystemname/namespaces/1 ]; then + mkdir /sys/kernel/config/nvmet/subsystems/$subsystemname/namespaces/1 +fi + +echo -n /dev/nullb0 > /sys/kernel/config/nvmet/subsystems/$subsystemname/namespaces/1/device_path +echo 1 > /sys/kernel/config/nvmet/subsystems/$subsystemname/namespaces/1/enable + +if [ ! -d /sys/kernel/config/nvmet/ports/1 ]; then + mkdir /sys/kernel/config/nvmet/ports/1 +fi + +echo rdma > /sys/kernel/config/nvmet/ports/1/addr_trtype +echo ipv4 > /sys/kernel/config/nvmet/ports/1/addr_adrfam +echo $NVMF_FIRST_TARGET_IP > /sys/kernel/config/nvmet/ports/1/addr_traddr +echo $NVMF_PORT > /sys/kernel/config/nvmet/ports/1/addr_trsvcid + +ln -s /sys/kernel/config/nvmet/subsystems/$subsystemname /sys/kernel/config/nvmet/ports/1/subsystems/$subsystemname + +modprobe -v nvme-rdma + +if [ -e "/dev/nvme-fabrics" ]; then + chmod a+rw /dev/nvme-fabrics +fi + +nvme discover -t rdma -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT + +#will replace with our own identify later +#$rootdir/examples/nvme/identify/identify -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT" -n nqn.2014-08.org.nvmexpress.discovery -t all +nvmfcleanup + +rm -rf /sys/kernel/config/nvmet/ports/1/subsystems/$subsystemname + +echo 0 > /sys/kernel/config/nvmet/subsystems/$subsystemname/namespaces/1/enable +echo -n 0 > /sys/kernel/config/nvmet/subsystems/$subsystemname/namespaces/1/device_path + +rmdir --ignore-fail-on-non-empty /sys/kernel/config/nvmet/subsystems/$subsystemname/namespaces/1 +rmdir --ignore-fail-on-non-empty /sys/kernel/config/nvmet/subsystems/$subsystemname +rmdir --ignore-fail-on-non-empty /sys/kernel/config/nvmet/ports/1 + +rmmod nvmet-rdma +rmmod null_blk +rmmod nvmet + +timing_exit identify_kernel_nvmf_tgt