1#!/usr/bin/env bash 2 3testdir=$(readlink -f $(dirname $0)) 4rootdir=$(readlink -f $testdir/../../..) 5source $rootdir/test/common/autotest_common.sh 6source $rootdir/test/nvmf/common.sh 7 8MALLOC_BDEV_SIZE=64 9MALLOC_BLOCK_SIZE=512 10 11rpc_py="$rootdir/scripts/rpc.py" 12 13nvmftestinit 14nvmfappstart -m 0xF 15 16$rpc_py nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192 17 18malloc_bdevs="$($rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE) " 19malloc_bdevs+="$($rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE)" 20# Create a RAID-0 bdev from two malloc bdevs 21raid_malloc_bdevs="$($rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE) " 22raid_malloc_bdevs+="$($rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE)" 23$rpc_py bdev_raid_create -n raid0 -z 64 -r 0 -b "$raid_malloc_bdevs" 24 25#Create a Concat bdev from three malloc bdevs 26concat_malloc_bdevs="$($rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE) " 27concat_malloc_bdevs+="$($rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE) " 28concat_malloc_bdevs+="$($rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE)" 29$rpc_py bdev_raid_create -n concat0 -r concat -z 64 -b "$concat_malloc_bdevs" 30 31$rpc_py nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s $NVMF_SERIAL 32for malloc_bdev in $malloc_bdevs; do 33 $rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 "$malloc_bdev" 34done 35$rpc_py nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT 36 37# Append the raid0 bdev into subsystem 38$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 raid0 39 40# Append the concat0 bdev into subsystem 41$rpc_py nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 concat0 42 43nvme connect -t $TEST_TRANSPORT -n "nqn.2016-06.io.spdk:cnode1" -a "$NVMF_FIRST_TARGET_IP" -s "$NVMF_PORT" 44 45waitforserial $NVMF_SERIAL 4 46 47$rootdir/scripts/fio-wrapper -p nvmf -i 4096 -d 1 -t write -r 1 -v 48$rootdir/scripts/fio-wrapper -p nvmf -i 4096 -d 1 -t randwrite -r 1 -v 49$rootdir/scripts/fio-wrapper -p nvmf -i 4096 -d 128 -t write -r 1 -v 50$rootdir/scripts/fio-wrapper -p nvmf -i 4096 -d 128 -t randwrite -r 1 -v 51 52sync 53 54#start hotplug test case 55$rootdir/scripts/fio-wrapper -p nvmf -i 4096 -d 1 -t read -r 10 & 56fio_pid=$! 57 58sleep 3 59 60$rpc_py bdev_raid_delete "concat0" 61$rpc_py bdev_raid_delete "raid0" 62for malloc_bdev in $malloc_bdevs $raid_malloc_bdevs $concat_malloc_bdevs; do 63 $rpc_py bdev_malloc_delete "$malloc_bdev" 64done 65 66fio_status=0 67wait $fio_pid || fio_status=$? 68 69nvme disconnect -n "nqn.2016-06.io.spdk:cnode1" || true 70waitforserial_disconnect "$NVMF_SERIAL" 71 72if [ $fio_status -eq 0 ]; then 73 echo "nvmf hotplug test: fio successful - expected failure" 74 nvmftestfini 75 exit 1 76else 77 echo "nvmf hotplug test: fio failed as expected" 78fi 79 80$rpc_py nvmf_delete_subsystem nqn.2016-06.io.spdk:cnode1 81 82rm -f ./local-job0-0-verify.state 83rm -f ./local-job1-1-verify.state 84rm -f ./local-job2-2-verify.state 85 86trap - SIGINT SIGTERM EXIT 87 88nvmftestfini 89