Spdk/test/nvmf/host/aer.sh
Changpeng Liu 763ab88884 nvmf: add Namespace attribute notice support
Users can use RPC to add/remove a namespace to/from
existing NVMe controller, SPDK NVMeoF target will
generate an asynchronous event as an indication to
host when asynchronous event request is available.

While here, we also set the event with invalid log
identifier, so that the host doesn't need to clear
the event. Users can use Set Feature to disable
such event.

Change-Id: I93c4d752f552d3c86c53e80877aa61c093e167cc
Signed-off-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-on: https://review.gerrithub.io/398759
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
2018-04-03 17:29:56 -04:00

96 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/env bash
testdir=$(readlink -f $(dirname $0))
rootdir=$(readlink -f $testdir/../../..)
source $rootdir/test/common/autotest_common.sh
source $rootdir/test/nvmf/common.sh
rpc_py="python $rootdir/scripts/rpc.py"
set -e
RDMA_IP_LIST=$(get_available_rdma_ips)
NVMF_FIRST_TARGET_IP=$(echo "$RDMA_IP_LIST" | head -n 1)
if [ -z $NVMF_FIRST_TARGET_IP ]; then
echo "no NIC for nvmf test"
exit 0
fi
if check_ip_is_soft_roce $NVMF_FIRST_TARGET_IP; then
echo "Bypass AER tests for softRoCE NIC"
exit 0
fi
timing_enter aer
timing_enter start_nvmf_tgt
$NVMF_APP -c $testdir/../nvmf.conf &
nvmfpid=$!
trap "killprocess $nvmfpid; exit 1" SIGINT SIGTERM EXIT
waitforlisten $nvmfpid
timing_exit start_nvmf_tgt
modprobe -v nvme-rdma
$rpc_py construct_malloc_bdev 64 512 --name Malloc0
$rpc_py construct_nvmf_subsystem nqn.2016-06.io.spdk:cnode1 "trtype:RDMA traddr:$NVMF_FIRST_TARGET_IP trsvcid:$NVMF_PORT" '' -a -s SPDK00000000000001 -n Malloc0
# TODO: this aer test tries to invoke an AER completion by setting the temperature
#threshold to a very low value. This does not work with emulated controllers
#though so currently the test is disabled.
#$rootdir/test/nvme/aer/aer -r "\
# trtype:RDMA \
# adrfam:IPv4 \
# traddr:$NVMF_FIRST_TARGET_IP \
# trsvcid:$NVMF_PORT \
# subnqn:nqn.2014-08.org.nvmexpress.discovery"
# Namespace Attribute Notice Tests with kernel initiator
nvme connect -t rdma -n "nqn.2016-06.io.spdk:cnode1" -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT"
sleep 2
sync
function get_nvme_name {
bdevs=$(lsblk -d | cut -d " " -f 1 | grep "^nvme[0-9]n2") || true
}
bdevs=""
get_nvme_name
if [ -n "$bdevs" ]; then
echo "Ignore adding Namespace 2 test"
$rpc_py delete_bdev Malloc0
nvmfcleanup
killprocess $nvmfpid
exit 0
fi
# Add a new namespace
$rpc_py construct_malloc_bdev 128 4096 --name Malloc1
$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 Malloc1 -n 2
sleep 3
sync
bdevs=""
get_nvme_name
if [ -z "$bdevs" ]; then
echo "AER for adding a Namespace test failed"
nvmfcleanup
killprocess $nvmfpid
exit 1
fi
$rpc_py delete_bdev Malloc0
$rpc_py delete_bdev Malloc1
$rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode1
trap - SIGINT SIGTERM EXIT
nvmfcleanup
killprocess $nvmfpid
timing_exit aer