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>
96 lines
2.3 KiB
Bash
Executable File
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
|