1#!/usr/bin/env bash 2 3curdir=$(dirname $(readlink -f "${BASH_SOURCE[0]}")) 4rootdir=$(readlink -f $curdir/../../..) 5source $rootdir/test/common/autotest_common.sh 6 7rpc_py=$rootdir/scripts/rpc.py 8 9function bdev_check_claimed() { 10 if [ "$($rpc_py get_bdevs -b "$@" | jq '.[0].claimed')" = "true" ]; then 11 return 0 12 else 13 return 1 14 fi 15} 16 17$SPDK_BIN_DIR/iscsi_tgt & 18spdk_pid=$! 19 20trap 'killprocess $spdk_pid; exit 1' SIGINT SIGTERM EXIT 21 22waitforlisten $spdk_pid 23 24$rpc_py bdev_malloc_create 101 512 -b Malloc0 25$rpc_py bdev_malloc_create 101 512 -b Malloc1 26 27$rpc_py bdev_ocf_create PartCache wt Malloc0 NonExisting 28 29$rpc_py bdev_ocf_get_bdevs PartCache | jq -e \ 30 '.[0] | .started == false and .cache.attached and .core.attached == false' 31 32$rpc_py bdev_ocf_get_bdevs NonExisting | jq -e \ 33 '.[0] | .name == "PartCache"' 34 35if ! bdev_check_claimed Malloc0; then 36 echo >&2 "Base device expected to be claimed now" 37 exit 1 38fi 39 40$rpc_py bdev_ocf_delete PartCache 41if bdev_check_claimed Malloc0; then 42 echo >&2 "Base device is not expected to be claimed now" 43 exit 1 44fi 45 46$rpc_py bdev_ocf_create FullCache wt Malloc0 Malloc1 --cache-line-size 8 47 48$rpc_py bdev_ocf_get_bdevs FullCache | jq -e \ 49 '.[0] | .started and .cache.attached and .core.attached' 50 51if ! (bdev_check_claimed Malloc0 && bdev_check_claimed Malloc1); then 52 echo >&2 "Base devices expected to be claimed now" 53 exit 1 54fi 55 56$rpc_py bdev_ocf_delete FullCache 57if bdev_check_claimed Malloc0 && bdev_check_claimed Malloc1; then 58 echo >&2 "Base devices are not expected to be claimed now" 59 exit 1 60fi 61 62$rpc_py bdev_ocf_create HotCache wt Malloc0 Malloc1 --cache-line-size 16 63 64if ! (bdev_check_claimed Malloc0 && bdev_check_claimed Malloc1); then 65 echo >&2 "Base devices expected to be claimed now" 66 exit 1 67fi 68 69$rpc_py bdev_malloc_delete Malloc0 70 71if bdev_check_claimed Malloc1; then 72 echo >&2 "Base device is not expected to be claimed now" 73 exit 1 74fi 75 76status=$($rpc_py get_bdevs) 77gone=$(echo $status | jq 'map(select(.name == "HotCache")) == []') 78if [[ $gone == false ]]; then 79 echo >&2 "OCF bdev is expected to unregister" 80 exit 1 81fi 82 83# check if shutdown of running CAS bdev is ok 84$rpc_py bdev_ocf_create PartCache wt NonExisting Malloc1 85 86trap - SIGINT SIGTERM EXIT 87 88killprocess $spdk_pid 89