]> git.proxmox.com Git - ceph.git/blob - ceph/src/spdk/test/nvmf/target/nvmf_vhost.sh
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / spdk / test / nvmf / target / nvmf_vhost.sh
1 #!/usr/bin/env bash
2
3 testdir=$(readlink -f $(dirname $0))
4 rootdir=$testdir/../../..
5 source $rootdir/test/common/autotest_common.sh
6 source $rootdir/test/nvmf/common.sh
7
8 if [ ! -d "/usr/local/qemu/spdk-3.0.0" ]; then
9 echo "Qemu not installed on this machine. It may be a VM. Skipping nvmf_vhost test."
10 exit 0
11 fi
12
13 source $rootdir/test/vhost/common.sh
14
15 MALLOC_BDEV_SIZE=128
16 MALLOC_BLOCK_SIZE=512
17 NVMF_SOCK="/tmp/nvmf_rpc.sock"
18 NVMF_RPC="$rootdir/scripts/rpc.py -s $NVMF_SOCK"
19
20 VHOST_SOCK="/tmp/vhost_rpc.sock"
21 VHOST_APP+=(-p 0 -r "$VHOST_SOCK" -u)
22 VHOST_RPC="$rootdir/scripts/rpc.py -s $VHOST_SOCK"
23
24 nvmftestinit
25
26 # Start Apps
27 "${NVMF_APP[@]}" -r $NVMF_SOCK &
28 nvmfpid=$!
29 waitforlisten $nvmfpid $NVMF_SOCK
30
31 trap 'process_shm --id $NVMF_APP_SHM_ID; nvmftestfini; exit 1' SIGINT SIGTERM EXIT
32
33 mkdir -p "$(get_vhost_dir 3)"
34
35 "${VHOST_APP[@]}" -S "$(get_vhost_dir 3)" &
36 vhostpid=$!
37 waitforlisten $vhostpid $NVMF_SOCK
38
39 trap 'process_shm --id $NVMF_APP_SHM_ID; killprocess $vhostpid nvmftestfini; exit 1' SIGINT SIGTERM EXIT
40
41 # Configure NVMF tgt on host machine
42 malloc_bdev="$($NVMF_RPC bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE)"
43
44 $NVMF_RPC nvmf_create_transport $NVMF_TRANSPORT_OPTS -u 8192 -p 4
45 $NVMF_RPC nvmf_create_subsystem nqn.2016-06.io.spdk:cnode1 -a -s SPDK00000000000001
46 $NVMF_RPC nvmf_subsystem_add_ns nqn.2016-06.io.spdk:cnode1 "$malloc_bdev"
47 $NVMF_RPC nvmf_subsystem_add_listener nqn.2016-06.io.spdk:cnode1 -t $TEST_TRANSPORT -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT
48
49 # Configure VHost on host machine
50 $VHOST_RPC bdev_nvme_attach_controller -b Nvme0 -t $TEST_TRANSPORT -f ipv4 -a $NVMF_FIRST_TARGET_IP -s $NVMF_PORT -n nqn.2016-06.io.spdk:cnode1
51 $VHOST_RPC vhost_create_scsi_controller naa.VhostScsi0.3
52 $VHOST_RPC vhost_scsi_controller_add_target naa.VhostScsi0.3 0 "Nvme0n1"
53
54 # start qemu based VM.
55 vm_setup --os="$VM_IMAGE" --disk-type=spdk_vhost_scsi --disks="VhostScsi0" --force=3 --vhost-name=3
56
57 vm_run 3
58
59 vm_wait_for_boot 300 3
60
61 # Run the fio workload remotely
62 vm_scp 3 $testdir/nvmf_vhost_fio.job 127.0.0.1:/root/nvmf_vhost_fio.job
63 vm_exec 3 "fio /root/nvmf_vhost_fio.job"
64 vm_shutdown_all
65
66 trap - SIGINT SIGTERM EXIT
67
68 killprocess $vhostpid
69 nvmftestfini