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