1#!/usr/bin/env bash 2# SPDX-License-Identifier: BSD-3-Clause 3# Copyright (C) 2019 Intel Corporation 4# All rights reserved. 5# 6curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}")) 7rootdir=$(readlink -f $curdir/../../..) 8source $rootdir/test/common/autotest_common.sh 9 10rpc_py=$rootdir/scripts/rpc.py 11 12spdk_pid='?' 13function start_spdk() { 14 $SPDK_BIN_DIR/iscsi_tgt & 15 spdk_pid=$! 16 trap 'killprocess $spdk_pid; exit 1' SIGINT SIGTERM EXIT 17 waitforlisten $spdk_pid 18} 19function stop_spdk() { 20 killprocess $spdk_pid 21 trap - SIGINT SIGTERM EXIT 22} 23 24start_spdk 25 26# Hotplug case 27 28$rpc_py bdev_malloc_create 1 512 -b Core0 29$rpc_py bdev_malloc_create 1 512 -b Core1 30 31$rpc_py bdev_ocf_create C1 wt Cache Core0 32$rpc_py bdev_ocf_create C2 wt Cache Core1 33 34$rpc_py bdev_ocf_get_bdevs | jq -e \ 35 'any(select(.started)) == false' 36 37$rpc_py bdev_malloc_create 101 512 -b Cache 38 39$rpc_py bdev_ocf_get_bdevs | jq -e \ 40 'all(select(.started)) == true' 41 42#Be sure that we will not fail delete because examine is still in progress 43waitforbdev C2 44 45# Detaching cores 46 47$rpc_py bdev_ocf_delete C2 48 49$rpc_py bdev_ocf_get_bdevs C1 | jq -e \ 50 '.[0] | .started' 51 52$rpc_py bdev_ocf_create C2 wt Cache Core1 53 54$rpc_py bdev_ocf_get_bdevs C2 | jq -e \ 55 '.[0] | .started' 56 57# Normal shutdown 58 59stop_spdk 60 61# Hotremove case 62start_spdk 63 64$rpc_py bdev_malloc_create 101 512 -b Cache 65$rpc_py bdev_malloc_create 101 512 -b Malloc 66$rpc_py bdev_malloc_create 1 512 -b Core 67 68$rpc_py bdev_ocf_create C1 wt Cache Malloc 69$rpc_py bdev_ocf_create C2 wt Cache Core 70 71$rpc_py bdev_ocf_get_bdevs Cache | jq \ 72 'length == 2' 73 74$rpc_py bdev_malloc_delete Cache 75 76$rpc_py bdev_ocf_get_bdevs | jq -e \ 77 '. == []' 78 79# Not fully initialized shutdown 80 81$rpc_py bdev_ocf_create C1 wt Malloc NonExisting 82$rpc_py bdev_ocf_create C2 wt Malloc NonExisting 83$rpc_py bdev_ocf_create C3 wt Malloc Core 84 85stop_spdk 86