1#!/usr/bin/env bash 2# SPDX-License-Identifier: BSD-3-Clause 3# Copyright (C) 2020 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 10source $rootdir/scripts/common.sh 11 12nvmftestinit 13 14timing_enter nvme_identify 15 16bdf=$(get_first_nvme_bdf) 17if [ -z "${bdf}" ]; then 18 echo "No NVMe drive found but test requires it. Failing the test." 19 exit 1 20fi 21 22# Expected values 23nvme_serial_number=$($SPDK_BIN_DIR/spdk_nvme_identify -r "trtype:PCIe traddr:${bdf}" -i 0 | grep "Serial Number:" | awk '{print $3}') 24nvme_model_number=$($SPDK_BIN_DIR/spdk_nvme_identify -r "trtype:PCIe traddr:${bdf}" -i 0 | grep "Model Number:" | awk '{print $3}') 25 26timing_exit nvme_identify 27 28timing_enter start_nvmf_tgt 29 30"${NVMF_APP[@]}" -m 0xF --wait-for-rpc & 31nvmfpid=$! 32 33trap 'process_shm --id $NVMF_APP_SHM_ID; nvmftestfini; exit 1' SIGINT SIGTERM EXIT 34 35waitforlisten $nvmfpid 36$rpc_py -v nvmf_set_config --passthru-identify-ctrlr 37$rpc_py -v framework_start_init 38$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192 39timing_exit start_nvmf_tgt 40 41$rpc_py bdev_nvme_attach_controller -b Nvme0 -t PCIe -a ${bdf} 42$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s SPDK00000000000001 -m 1 43$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 Nvme0n1 44$rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT 45 46$rpc_py nvmf_get_subsystems 47 48# Discovered values 49nvmf_serial_number=$($SPDK_BIN_DIR/spdk_nvme_identify -r "\ 50 trtype:$TEST_TRANSPORT \ 51 adrfam:IPv4 \ 52 traddr:$NVMF_FIRST_TARGET_IP \ 53 trsvcid:$NVMF_PORT \ 54 subnqn:nqn.2016-06.io.spdk:cnode1" | grep "Serial Number:" | awk '{print $3}') 55 56nvmf_model_number=$($SPDK_BIN_DIR/spdk_nvme_identify -r "\ 57 trtype:$TEST_TRANSPORT \ 58 adrfam:IPv4 \ 59 traddr:$NVMF_FIRST_TARGET_IP \ 60 trsvcid:$NVMF_PORT \ 61 subnqn:nqn.2016-06.io.spdk:cnode1" | grep "Model Number:" | awk '{print $3}') 62 63if [ ${nvme_serial_number} != ${nvmf_serial_number} ]; then 64 echo "Serial number doesn't match" 65 exit 1 66fi 67 68if [ ${nvme_model_number} != ${nvmf_model_number} ]; then 69 echo "Model number doesn't match" 70 exit 1 71fi 72 73$rpc_py nvmf_delete_subsystem nqn.2016-06.io.spdk:cnode1 74 75trap - SIGINT SIGTERM EXIT 76 77nvmftestfini 78