]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/test/vhost/hotplug/scsi_hotplug.sh
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / test / vhost / hotplug / scsi_hotplug.sh
1 #!/usr/bin/env bash
2
3 testdir=$(readlink -f $(dirname $0))
4 rootdir=$(readlink -f $testdir/../../..)
5 source $rootdir/test/common/autotest_common.sh
6 source $rootdir/test/vhost/common.sh
7 source $rootdir/test/vhost/hotplug/common.sh
8
9 if [[ $scsi_hot_remove_test == 1 ]] && [[ $blk_hot_remove_test == 1 ]]; then
10 notice "Vhost-scsi and vhost-blk hotremove tests cannot be run together"
11 fi
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.
15 function 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
37 function 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
56 trap 'error_exit "${FUNCNAME}" "${LINENO}"' ERR
57 # Hotremove/hotattach/hotdetach test cases prerequisites
58 # Run vhost with 2 NVMe disks.
59
60 notice "==============="
61 notice ""
62 notice "running SPDK"
63 notice ""
64 vhost_run 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
75 if [[ $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
85 fi
86 if [[ $scsi_hot_remove_test == 1 ]]; then
87 source $testdir/scsi_hotremove.sh
88 fi
89 if [[ $blk_hot_remove_test == 1 ]]; then
90 source $testdir/blk_hotremove.sh
91 fi
92 post_test_case