1#!/usr/bin/env bash 2# SPDX-License-Identifier: BSD-3-Clause 3# Copyright (C) 2016 Intel Corporation 4# All rights reserved. 5# 6testdir=$(readlink -f $(dirname $0)) 7rootdir=$(readlink -f $testdir/../../..) 8source $rootdir/test/common/autotest_common.sh 9source $rootdir/test/nvmf/common.sh 10 11NULL_BDEV_SIZE=102400 12NULL_BLOCK_SIZE=512 13NVMF_PORT_REFERRAL=4430 14 15if ! hash nvme; then 16 echo "nvme command not found; skipping discovery test" 17 exit 0 18fi 19 20nvmftestinit 21nvmfappstart -m 0xF 22 23$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192 24 25# Use at least 4 subsystems so they spill over to a second discovery log page 26for i in $(seq 1 4); do 27 $rpc_py bdev_null_create Null$i $NULL_BDEV_SIZE $NULL_BLOCK_SIZE 28 $rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode$i -a -s SPDK0000000000000$i 29 $rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode$i Null$i 30 $rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode$i -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT 31done 32$rpc_py nvmf_subsystem_add_listener discovery -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT 33 34# Add a referral to another discovery service 35$rpc_py nvmf_discovery_add_referral -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT_REFERRAL 36 37nvme discover "${NVME_HOST[@]}" -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT 38 39echo "Perform nvmf subsystem discovery via RPC" 40$rpc_py nvmf_get_subsystems 41 42for i in $(seq 1 4); do 43 $rpc_py nvmf_delete_subsystem nqn.2016-06.io.spdk:cnode$i 44 $rpc_py bdev_null_delete Null$i 45done 46 47$rpc_py nvmf_discovery_remove_referral -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT_REFERRAL 48 49check_bdevs=$($rpc_py bdev_get_bdevs | jq -r '.[].name') 50if [ -n "$check_bdevs" ]; then 51 echo $check_bdevs 52 exit 1 53fi 54 55trap - SIGINT SIGTERM EXIT 56 57nvmftestfini 58