xref: /spdk/test/nvmf/target/nvmf_vfio_user.sh (revision 32999ab917f67af61872f868585fd3d78ad6fb8a)
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
10NUM_DEVICES=2
11
12rpc_py="$rootdir/scripts/rpc.py"
13
14export TEST_TRANSPORT=VFIOUSER
15
16rm -rf /var/run/muser
17
18# Start the target
19"${NVMF_APP[@]}" -m 0x1 &
20nvmfpid=$!
21echo "Process pid: $nvmfpid"
22
23trap 'killprocess $nvmfpid; exit 1' SIGINT SIGTERM EXIT
24waitforlisten $nvmfpid
25
26sleep 1
27
28$rpc_py nvmf_create_transport -t VFIOUSER
29
30mkdir -p /var/run/muser
31
32for i in $(seq 1 $NUM_DEVICES); do
33	mkdir -p /var/run/muser/domain/muser$i/$i
34
35	$rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE -b Malloc$i
36	$rpc_py nvmf_create_subsystem nqn.2019-07.io.spdk:cnode$i -a -s SPDK$i
37	$rpc_py nvmf_subsystem_add_ns nqn.2019-07.io.spdk:cnode$i Malloc$i
38	$rpc_py nvmf_subsystem_add_listener nqn.2019-07.io.spdk:cnode$i -t VFIOUSER -a "/var/run/muser/domain/muser$i/$i" -s 0
39done
40
41for i in $(seq 1 $NUM_DEVICES); do
42	$SPDK_EXAMPLE_DIR/identify -r "trtype:VFIOUSER traddr:/var/run/muser/domain/muser$i/$i" -g -L nvme -L nvme_vfio -L vfio_pci
43	sleep 1
44	$SPDK_EXAMPLE_DIR/perf -r "trtype:VFIOUSER traddr:/var/run/muser/domain/muser$i/$i" -s 256 -g -q 128 -o 4096 -w read -t 5 -c 0x2
45	sleep 1
46	$SPDK_EXAMPLE_DIR/perf -r "trtype:VFIOUSER traddr:/var/run/muser/domain/muser$i/$i" -s 256 -g -q 128 -o 4096 -w write -t 5 -c 0x2
47	sleep 1
48	$SPDK_EXAMPLE_DIR/reconnect -r "trtype:VFIOUSER traddr:/var/run/muser/domain/muser$i/$i" -g -q 32 -o 4096 -w randrw -M 50 -t 5 -c 0xE
49	sleep 1
50done
51
52killprocess $nvmfpid
53
54rm -rf /var/run/muser
55
56trap - SIGINT SIGTERM EXIT
57