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/vhost/common.sh 7source $rootdir/test/vhost/hotplug/common.sh 8 9if [[ $scsi_hot_remove_test == 1 ]] && [[ $blk_hot_remove_test == 1 ]]; then 10 notice "Vhost-scsi and vhost-blk hotremove tests cannot be run together" 11fi 12 13# Run spdk by calling run_vhost from hotplug/common.sh. 14# Then prepare vhost with rpc calls and setup and run 4 VMs. 15function pre_hot_attach_detach_test_case() { 16 used_vms="" 17 $rpc_py vhost_create_scsi_controller naa.Nvme0n1p0.0 18 $rpc_py vhost_create_scsi_controller naa.Nvme0n1p1.0 19 $rpc_py vhost_create_scsi_controller naa.Nvme0n1p2.1 20 $rpc_py vhost_create_scsi_controller naa.Nvme0n1p3.1 21 $rpc_py vhost_create_scsi_controller naa.Nvme0n1p4.2 22 $rpc_py vhost_create_scsi_controller naa.Nvme0n1p5.2 23 $rpc_py vhost_create_scsi_controller naa.Nvme0n1p6.3 24 $rpc_py vhost_create_scsi_controller naa.Nvme0n1p7.3 25 $rpc_py vhost_scsi_controller_add_target naa.Nvme0n1p4.2 0 Nvme0n1p8 26 $rpc_py vhost_scsi_controller_add_target naa.Nvme0n1p4.2 1 Nvme0n1p9 27 $rpc_py vhost_scsi_controller_add_target naa.Nvme0n1p5.2 0 Nvme0n1p10 28 $rpc_py vhost_scsi_controller_add_target naa.Nvme0n1p5.2 1 Nvme0n1p11 29 $rpc_py vhost_scsi_controller_add_target naa.Nvme0n1p6.3 0 Nvme0n1p12 30 $rpc_py vhost_scsi_controller_add_target naa.Nvme0n1p6.3 1 Nvme0n1p13 31 $rpc_py vhost_scsi_controller_add_target naa.Nvme0n1p7.3 0 Nvme0n1p14 32 $rpc_py vhost_scsi_controller_add_target naa.Nvme0n1p7.3 1 Nvme0n1p15 33 vms_setup_and_run "0 1 2 3" 34 vms_prepare "0 1 2 3" 35} 36 37function clear_vhost_config() { 38 $rpc_py vhost_scsi_controller_remove_target naa.Nvme0n1p4.2 0 39 $rpc_py vhost_scsi_controller_remove_target naa.Nvme0n1p4.2 1 40 $rpc_py vhost_scsi_controller_remove_target naa.Nvme0n1p5.2 0 41 $rpc_py vhost_scsi_controller_remove_target naa.Nvme0n1p5.2 1 42 $rpc_py vhost_scsi_controller_remove_target naa.Nvme0n1p6.3 0 43 $rpc_py vhost_scsi_controller_remove_target naa.Nvme0n1p6.3 1 44 $rpc_py vhost_scsi_controller_remove_target naa.Nvme0n1p7.3 0 45 $rpc_py vhost_scsi_controller_remove_target naa.Nvme0n1p7.3 1 46 $rpc_py vhost_delete_controller naa.Nvme0n1p0.0 47 $rpc_py vhost_delete_controller naa.Nvme0n1p1.0 48 $rpc_py vhost_delete_controller naa.Nvme0n1p2.1 49 $rpc_py vhost_delete_controller naa.Nvme0n1p3.1 50 $rpc_py vhost_delete_controller naa.Nvme0n1p4.2 51 $rpc_py vhost_delete_controller naa.Nvme0n1p5.2 52 $rpc_py vhost_delete_controller naa.Nvme0n1p6.3 53 $rpc_py vhost_delete_controller naa.Nvme0n1p7.3 54} 55 56trap 'error_exit "${FUNCNAME}" "${LINENO}"' ERR 57# Hotremove/hotattach/hotdetach test cases prerequisites 58# Run vhost with 2 NVMe disks. 59 60notice "===============" 61notice "" 62notice "running SPDK" 63notice "" 64vhost_run -n 0 65$rpc_py bdev_nvme_set_hotplug -e 66$rpc_py bdev_split_create Nvme0n1 16 67$rpc_py bdev_malloc_create 128 512 -b Malloc 68$rpc_py bdev_split_create Malloc 4 69$rpc_py bdev_split_create HotInNvme0n1 2 70$rpc_py bdev_split_create HotInNvme1n1 2 71$rpc_py bdev_split_create HotInNvme2n1 2 72$rpc_py bdev_split_create HotInNvme3n1 2 73$rpc_py bdev_get_bdevs 74 75if [[ $scsi_hot_remove_test == 0 ]] && [[ $blk_hot_remove_test == 0 ]]; then 76 pre_hot_attach_detach_test_case 77 $testdir/scsi_hotattach.sh --fio-bin=$fio_bin & 78 first_script=$! 79 $testdir/scsi_hotdetach.sh --fio-bin=$fio_bin & 80 second_script=$! 81 wait $first_script 82 wait $second_script 83 vm_shutdown_all 84 clear_vhost_config 85fi 86if [[ $scsi_hot_remove_test == 1 ]]; then 87 source $testdir/scsi_hotremove.sh 88fi 89if [[ $blk_hot_remove_test == 1 ]]; then 90 source $testdir/blk_hotremove.sh 91fi 92post_test_case 93