xref: /spdk/test/spdkcli/virtio.sh (revision 18c8b52afa69f39481ebb75711b2f30b11693f9d)
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/spdkcli/common.sh
7
8trap 'killprocess $virtio_pid; on_error_exit' ERR
9
10timing_enter run_spdk_tgt
11run_spdk_tgt
12timing_exit run_spdk_tgt
13
14timing_enter run_spdk_virtio
15$SPDK_BIN_DIR/spdk_tgt -m 0x4 -p 0 -g -u -r /var/tmp/virtio.sock &
16virtio_pid=$!
17waitforlisten $virtio_pid /var/tmp/virtio.sock
18timing_exit run_spdk_virtio
19
20timing_enter spdkcli_create_virtio_pci_config
21$spdkcli_job "'/bdevs/malloc create 32 512 Malloc0' 'Malloc0' True
22'/bdevs/malloc create 32 512 Malloc1' 'Malloc1' True
23"
24pci_blk=$(lspci -nn -D | grep '1af4:1001' | head -1 | awk '{print $1;}')
25if [ -n "$pci_blk" ] && grep -Eq "DRIVER=(uio|vfio)" "/sys/bus/pci/devices/$pci_blk/uevent"; then
26	$spdkcli_job "'/bdevs/virtioblk_disk create virtioblk_pci pci $pci_blk' 'virtioblk_pci' True"
27fi
28pci_scsi=$(lspci -nn -D | grep '1af4:1004' | head -1 | awk '{print $1;}')
29if [ -n "$pci_scsi" ] && grep -Eq "DRIVER=(uio|vfio)" "/sys/bus/pci/devices/$pci_scsi/uevent"; then
30	$spdkcli_job "'/bdevs/virtioscsi_disk create virtioscsi_pci pci $pci_scsi' 'virtioscsi_pci' True"
31fi
32$spdkcli_job "'/vhost/scsi create sample_scsi' 'sample_scsi' True
33'/vhost/scsi/sample_scsi add_lun 0 Malloc0' 'Malloc0' True
34'/vhost/block create sample_block Malloc1' 'Malloc1' True
35"
36timing_exit spdkcli_create_virtio_pci_config
37
38timing_enter spdkcli_check_match
39if [ -n "$pci_blk" ] && [ -n "$pci_scsi" ]; then
40	MATCH_FILE="spdkcli_virtio_pci.test"
41	SPDKCLI_BRANCH="/bdevs"
42	check_match
43fi
44timing_exit spdkcli_check_match
45
46timing_enter spdkcli_create_virtio_user_config
47$spdkcli_job "'/bdevs/virtioblk_disk create virtioblk_user user $testdir/../../sample_block' 'virtioblk_user' True
48'/bdevs/virtioscsi_disk create virtioscsi_user user $testdir/../../sample_scsi' 'virtioscsi_user' True
49" /var/tmp/virtio.sock
50timing_exit spdkcli_create_virtio_user_config
51
52timing_enter spdkcli_check_match_user_config
53MATCH_FILE="spdkcli_virtio_user.test"
54SPDKCLI_BRANCH="/vhost"
55check_match
56timing_exit spdkcli_check_match_user_config
57
58timing_enter spdkcli_clear_virtio_config
59$spdkcli_job "'/bdevs/virtioscsi_disk delete virtioscsi_user' '' False
60'/bdevs/virtioblk_disk delete virtioblk_user' '' False
61" /var/tmp/virtio.sock
62$spdkcli_job "'/vhost/block delete sample_block' 'sample_block'
63'/vhost/scsi/sample_scsi remove_target 0' 'Malloc0'
64'/vhost/scsi delete sample_scsi' 'sample_scsi'
65"
66if [ -n "$pci_blk" ] && grep -Eq "DRIVER=(uio|vfio)" "/sys/bus/pci/devices/$pci_blk/uevent"; then
67	$spdkcli_job "'/bdevs/virtioblk_disk delete virtioblk_pci' 'virtioblk_pci'"
68fi
69if [ -n "$pci_scsi" ] && grep -Eq "DRIVER=(uio|vfio)" "/sys/bus/pci/devices/$pci_scsi/uevent"; then
70	$spdkcli_job "'/bdevs/virtioscsi_disk delete virtioscsi_pci' 'virtioscsi_pci'"
71fi
72$spdkcli_job "'/bdevs/malloc delete Malloc0' 'Malloc0'
73'/bdevs/malloc delete Malloc1' 'Malloc1'
74"
75timing_exit spdkcli_clear_virtio_config
76
77killprocess $virtio_pid
78killprocess $spdk_tgt_pid
79