When NVMf target linked with vfio-user library, we can use vfio-user client library to connect to the target. Here is the three examples that can work with target: identify -r 'trtype:VFIOUSER traddr:/var/run/muser/domain/muser0/8' -g perf -r 'trtype:VFIOUSER traddr:/var/run/muser/domain/muser0/8' -g -q 1 -o 4096 -w read -t 10 reconnect -r 'trtype:VFIOUSER traddr:/var/run/muser/domain/muser0/8' -g -q 32 -o 4096 -w randrw \ -M 50 -t 10 -c 0xE You can run the following test script test/nvmf/target/nvmf_vfio_user.sh to have a quick test, currently enabled with NVMe Identify,Perf,Reconnect tools. Change-Id: Ieb9842b2f372184fffbf7f23e4aad26feb47c350 Signed-off-by: Changpeng Liu <changpeng.liu@intel.com> Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/3839 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
59 lines
1.8 KiB
Bash
Executable File
59 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
testdir=$(readlink -f $(dirname $0))
|
|
rootdir=$(readlink -f $testdir/../../..)
|
|
source $rootdir/test/common/autotest_common.sh
|
|
source $rootdir/test/nvmf/common.sh
|
|
|
|
MALLOC_BDEV_SIZE=512
|
|
MALLOC_BLOCK_SIZE=512
|
|
|
|
rpc_py="$rootdir/scripts/rpc.py"
|
|
|
|
export TEST_TRANSPORT=VFIOUSER
|
|
|
|
rm -rf /var/run/muser
|
|
rm -rf /dev/shm/muser
|
|
|
|
mkdir -p /var/run/muser
|
|
mkdir -p /var/run/muser/iommu_group
|
|
mkdir -p /var/run/muser/domain/muser0/8
|
|
mkdir -p /dev/shm/muser/muser0
|
|
|
|
# Start the target
|
|
"${NVMF_APP[@]}" -m 0x1 &
|
|
nvmfpid=$!
|
|
echo "Process pid: $nvmfpid"
|
|
|
|
trap 'killprocess $nvmfpid; exit 1' SIGINT SIGTERM EXIT
|
|
waitforlisten $nvmfpid
|
|
|
|
sleep 1
|
|
|
|
$rpc_py nvmf_create_transport -t VFIOUSER
|
|
|
|
$rpc_py bdev_malloc_create $MALLOC_BDEV_SIZE $MALLOC_BLOCK_SIZE -b Malloc0
|
|
$rpc_py nvmf_create_subsystem nqn.2019-07.io.spdk:cnode0 -a -s SPDK0
|
|
$rpc_py nvmf_subsystem_add_ns nqn.2019-07.io.spdk:cnode0 Malloc0
|
|
$rpc_py nvmf_subsystem_add_listener nqn.2019-07.io.spdk:cnode0 -t VFIOUSER -a "/var/run/muser/domain/muser0/8" -s 0
|
|
|
|
ln -s /var/run/muser/domain/muser0/8 /var/run/muser/domain/muser0/8/iommu_group
|
|
ln -s /var/run/muser/domain/muser0/8 /var/run/muser/iommu_group/8
|
|
ln -s /var/run/muser/domain/muser0/8/bar0 /dev/shm/muser/muser0/bar0
|
|
|
|
$SPDK_EXAMPLE_DIR/identify -r 'trtype:VFIOUSER traddr:/var/run/muser/domain/muser0/8' -g -L nvme -L nvme_vfio -L vfio_pci
|
|
sleep 1
|
|
$SPDK_EXAMPLE_DIR/perf -r 'trtype:VFIOUSER traddr:/var/run/muser/domain/muser0/8' -s 256 -g -q 128 -o 4096 -w read -t 10 -c 0x2
|
|
sleep 1
|
|
$SPDK_EXAMPLE_DIR/perf -r 'trtype:VFIOUSER traddr:/var/run/muser/domain/muser0/8' -s 256 -g -q 128 -o 4096 -w write -t 10 -c 0x2
|
|
sleep 1
|
|
$SPDK_EXAMPLE_DIR/reconnect -r 'trtype:VFIOUSER traddr:/var/run/muser/domain/muser0/8' -g -q 32 -o 4096 -w randrw -M 50 -t 10 -c 0xE
|
|
sleep 1
|
|
|
|
killprocess $nvmfpid
|
|
|
|
rm -rf /var/run/muser
|
|
rm -rf /dev/shm/muser
|
|
|
|
trap - SIGINT SIGTERM EXIT
|