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