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