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/scripts/common.sh 9source $rootdir/test/common/autotest_common.sh 10 11rpc_py=$rootdir/scripts/rpc.py 12 13bdf=$(get_first_nvme_bdf) 14ctrlr_base="/dev/spdk/nvme" 15 16$SPDK_BIN_DIR/spdk_tgt -m 0x3 & 17spdk_tgt_pid=$! 18trap 'kill -9 ${spdk_tgt_pid}; exit 1' SIGINT SIGTERM EXIT 19 20waitforlisten $spdk_tgt_pid 21 22$rpc_py bdev_nvme_attach_controller -b Nvme0 -t PCIe -a ${bdf} 23$rpc_py bdev_nvme_cuse_register -n Nvme0 24 25sleep 5 26 27if [ ! -c "${ctrlr_base}0" ]; then 28 exit 1 29fi 30 31$rpc_py bdev_get_bdevs 32$rpc_py bdev_nvme_get_controllers 33 34$rpc_py bdev_nvme_cuse_unregister -n Nvme0 35sleep 1 36if [ -c "${ctrlr_base}0" ]; then 37 exit 1 38fi 39 40# Verify removing non-existent cuse device 41$rpc_py bdev_nvme_cuse_unregister -n Nvme0 && false 42 43$rpc_py bdev_nvme_cuse_register -n Nvme0 44sleep 1 45 46if [ ! -c "${ctrlr_base}0" ]; then 47 exit 1 48fi 49 50# Verify adding same nvme controller twice fails 51$rpc_py bdev_nvme_cuse_register -n Nvme0 && false 52sleep 1 53 54if [ -c "${ctrlr_base}1" ]; then 55 exit 1 56fi 57 58$rpc_py bdev_nvme_detach_controller Nvme0 59 60trap - SIGINT SIGTERM EXIT 61killprocess $spdk_tgt_pid 62