summaryrefslogtreecommitdiffstats
path: root/src/spdk/test/vhost/migration/migration-tc3b.sh
blob: 22d54df7313d08b2ab6894b37b9ed9dee43c73b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Set -m option is needed to be able to use "suspend" command
# as we are usin non-interactive session to connect to remote.
# Without -m it would be not possible to suspend the process.
set -m
source $testdir/autotest.config

incoming_vm=1
target_vm=2
target_vm_ctrl=naa.VhostScsi0.$target_vm
rpc="$rootdir/scripts/rpc.py -s $(get_vhost_dir 1)/rpc.sock"
share_dir=$VHOST_DIR/share

function host_2_cleanup_vhost() {
	notice "Shutting down VM $target_vm"
	vm_kill $target_vm

	notice "Removing bdev & controller from vhost 1 on remote server"
	$rpc bdev_nvme_detach_controller Nvme0
	$rpc vhost_delete_controller $target_vm_ctrl

	notice "Shutting down vhost app"
	vhost_kill 1
	sleep 1
}

function host_2_start_vhost() {
	echo "BASE DIR $VHOST_DIR"
	vhost_work_dir=$VHOST_DIR/vhost1
	mkdir -p $vhost_work_dir
	rm -f $vhost_work_dir/*

	notice "Starting vhost 1 instance on remote server"
	trap 'host_2_cleanup_vhost; error_exit "${FUNCNAME}" "${LINENO}"' INT ERR EXIT
	vhost_run 1 "-u"

	$rpc bdev_nvme_attach_controller -b Nvme0 -t rdma -f ipv4 -a $RDMA_TARGET_IP -s 4420 -n "nqn.2018-02.io.spdk:cnode1"
	$rpc vhost_create_scsi_controller $target_vm_ctrl
	$rpc vhost_scsi_controller_add_target $target_vm_ctrl 0 Nvme0n1

	vm_setup --os="$os_image" --force=$target_vm --disk-type=spdk_vhost_scsi --disks=VhostScsi0 \
		--memory=512 --vhost-name=1 --incoming=$incoming_vm
	vm_run $target_vm
	sleep 1

	# Use this file as a flag to notify main script
	# that setup on remote server is done
	echo "DONE" > $share_dir/DONE
}

echo $$ > $VHOST_DIR/tc3b.pid
host_2_start_vhost
suspend -f

if ! vm_os_booted $target_vm; then
	fail "VM$target_vm is not running!"
fi

if ! is_fio_running $target_vm; then
	vm_exec $target_vm "cat /root/migration-tc3.log"
	error "FIO is not running on remote server after migration!"
fi

notice "Waiting for FIO to finish on remote server VM"
timeout=40
while is_fio_running $target_vm; do
	sleep 1
	echo -n "."
	if ((timeout-- == 0)); then
		error "timeout while waiting for FIO!"
	fi
done

notice "FIO result after migration:"
vm_exec $target_vm "cat /root/migration-tc3.log"

host_2_cleanup_vhost
echo "DONE" > $share_dir/DONE