- Add independent functions to create transport with specific opts and add to target while maintaining backward compatibility with current apps and rpc configuration that still use the add listener method to create a transport. - Add new rpc function to create transport and add to target. + Update json reporting to include new rpc function. + Update python scripts to support new rpc function. + New nvmf test script (cr_trprt.sh) to test new rpc function. Change-Id: I12d0a42e34c9edff757755f18a78b722d5e1523e Signed-off-by: John Barnard <john.barnard@broadcom.com> Reviewed-on: https://review.gerrithub.io/423590 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
78 lines
2.0 KiB
Bash
Executable File
78 lines
2.0 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
|
|
|
|
NULL_BDEV_SIZE=102400
|
|
NULL_BLOCK_SIZE=512
|
|
|
|
rpc_py="python $rootdir/scripts/rpc.py"
|
|
|
|
set -e
|
|
|
|
# pass the parameter 'iso' to this script when running it in isolation to trigger rdma device initialization.
|
|
# e.g. sudo ./crt_trprt.sh iso
|
|
nvmftestinit $1
|
|
|
|
if ! hash nvme; then
|
|
echo "nvme command not found; skipping create transport test"
|
|
exit 0
|
|
fi
|
|
|
|
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
|
|
|
|
timing_enter cr_trprt
|
|
timing_enter start_nvmf_tgt
|
|
# Start up the NVMf target in another process
|
|
$NVMF_APP -m 0xF --wait-for-rpc &
|
|
nvmfpid=$!
|
|
|
|
trap "killprocess $nvmfpid; nvmftestfini $1; exit 1" SIGINT SIGTERM EXIT
|
|
|
|
waitforlisten $nvmfpid
|
|
$rpc_py start_subsystem_init
|
|
# Use nvmf_create_transport call to create transport
|
|
$rpc_py nvmf_create_transport -t RDMA -u 8192 -p 4
|
|
timing_exit start_nvmf_tgt
|
|
|
|
null_bdevs="$($rpc_py construct_null_bdev Null0 $NULL_BDEV_SIZE $NULL_BLOCK_SIZE) "
|
|
null_bdevs+="$($rpc_py construct_null_bdev Null1 $NULL_BDEV_SIZE $NULL_BLOCK_SIZE)"
|
|
|
|
modprobe -v nvme-rdma
|
|
|
|
$rpc_py construct_nvmf_subsystem nqn.2016-06.io.spdk:cnode1 "trtype:RDMA traddr:$NVMF_FIRST_TARGET_IP trsvcid:4420" "" -a -s SPDK00000000000001
|
|
for null_bdev in $null_bdevs; do
|
|
$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 $null_bdev
|
|
done
|
|
|
|
nvme discover -t rdma -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT
|
|
|
|
echo "Perform nvmf subsystem discovery via RPC"
|
|
$rpc_py get_nvmf_subsystems
|
|
|
|
$rpc_py delete_nvmf_subsystem nqn.2016-06.io.spdk:cnode1
|
|
|
|
for null_bdev in $null_bdevs; do
|
|
$rpc_py delete_null_bdev $null_bdev
|
|
done
|
|
|
|
check_bdevs=$($rpc_py get_bdevs | jq -r '.[].name')
|
|
if [ -n "$check_bdevs" ]; then
|
|
echo $check_bdevs
|
|
exit 1
|
|
fi
|
|
|
|
trap - SIGINT SIGTERM EXIT
|
|
|
|
nvmfcleanup
|
|
killprocess $nvmfpid
|
|
nvmftestfini $1
|
|
timing_exit crt_trprt
|