2017-10-17 18:59:36 +00:00
|
|
|
#!/usr/bin/env bash
|
2022-11-02 15:49:40 +00:00
|
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
# Copyright (C) 2017 Intel Corporation
|
|
|
|
# All rights reserved.
|
|
|
|
#
|
2019-05-10 17:54:24 +00:00
|
|
|
testdir=$(readlink -f $(dirname $0))
|
|
|
|
rootdir=$(readlink -f $testdir/../../..)
|
|
|
|
source $rootdir/test/common/autotest_common.sh
|
|
|
|
source $rootdir/test/vhost/common.sh
|
|
|
|
|
2019-06-04 20:55:21 +00:00
|
|
|
rpc_py="$testdir/../../../scripts/rpc.py -s $(get_vhost_dir 0)/rpc.sock"
|
2017-10-17 18:59:36 +00:00
|
|
|
|
|
|
|
vm_img=""
|
2018-02-13 18:49:46 +00:00
|
|
|
disk="Nvme0n1"
|
2017-10-17 18:59:36 +00:00
|
|
|
x=""
|
|
|
|
|
2020-05-07 11:27:06 +00:00
|
|
|
function usage() {
|
|
|
|
[[ -n $2 ]] && (
|
|
|
|
echo "$2"
|
|
|
|
echo ""
|
|
|
|
)
|
2018-01-17 02:32:46 +00:00
|
|
|
echo "Shortcut script for automated readonly test for vhost-block"
|
2017-10-17 18:59:36 +00:00
|
|
|
echo "For test details check test_plan.md"
|
|
|
|
echo
|
|
|
|
echo "Usage: $(basename $1) [OPTIONS]"
|
|
|
|
echo
|
|
|
|
echo "-h, --help Print help and exit"
|
|
|
|
echo " --vm_image= Path to VM image"
|
2018-02-13 18:49:46 +00:00
|
|
|
echo " --disk= Disk name."
|
2017-10-17 18:59:36 +00:00
|
|
|
echo " If disk=malloc, then creates malloc disk. For malloc disks, size is always 512M,"
|
2018-02-13 18:49:46 +00:00
|
|
|
echo " e.g. --disk=malloc. (Default: Nvme0n1)"
|
2017-10-17 18:59:36 +00:00
|
|
|
echo "-x set -x for script debug"
|
|
|
|
}
|
|
|
|
|
|
|
|
while getopts 'xh-:' optchar; do
|
|
|
|
case "$optchar" in
|
2020-05-07 11:27:06 +00:00
|
|
|
-)
|
|
|
|
case "$OPTARG" in
|
|
|
|
help) usage $0 && exit 0 ;;
|
|
|
|
vm_image=*) vm_img="${OPTARG#*=}" ;;
|
|
|
|
disk=*) disk="${OPTARG#*=}" ;;
|
|
|
|
*) usage $0 "Invalid argument '$OPTARG'" && exit 1 ;;
|
|
|
|
esac
|
|
|
|
;;
|
|
|
|
h) usage $0 && exit 0 ;;
|
|
|
|
x)
|
|
|
|
set -x
|
|
|
|
x="-x"
|
|
|
|
;;
|
|
|
|
*) usage $0 "Invalid argument '$OPTARG'" && exit 1 ;;
|
2017-10-17 18:59:36 +00:00
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2019-05-17 21:09:40 +00:00
|
|
|
vhosttestinit
|
|
|
|
|
2017-10-17 18:59:36 +00:00
|
|
|
trap 'error_exit "${FUNCNAME}" "${LINENO}"' ERR
|
|
|
|
|
2017-12-18 19:45:33 +00:00
|
|
|
if [[ $EUID -ne 0 ]]; then
|
|
|
|
fail "Go away user come back as root"
|
|
|
|
fi
|
|
|
|
|
2020-05-07 11:27:06 +00:00
|
|
|
function print_tc_name() {
|
2017-12-18 19:45:33 +00:00
|
|
|
notice ""
|
|
|
|
notice "==============================================================="
|
|
|
|
notice "Now running: $1"
|
|
|
|
notice "==============================================================="
|
2017-10-17 18:59:36 +00:00
|
|
|
}
|
|
|
|
|
2020-05-07 11:27:06 +00:00
|
|
|
function blk_ro_tc1() {
|
2017-10-17 18:59:36 +00:00
|
|
|
print_tc_name ${FUNCNAME[0]}
|
|
|
|
local vm_no="0"
|
|
|
|
local disk_name=$disk
|
|
|
|
local vhost_blk_name=""
|
2019-06-04 20:29:27 +00:00
|
|
|
local vm_dir="$VHOST_DIR/vms/$vm_no"
|
2017-10-17 18:59:36 +00:00
|
|
|
|
|
|
|
if [[ $disk =~ .*malloc.* ]]; then
|
2019-09-13 14:40:15 +00:00
|
|
|
if ! disk_name=$($rpc_py bdev_malloc_create 512 4096); then
|
2017-12-18 19:45:33 +00:00
|
|
|
fail "Failed to create malloc bdev"
|
2017-10-17 18:59:36 +00:00
|
|
|
fi
|
|
|
|
|
2018-02-13 18:49:46 +00:00
|
|
|
disk=$disk_name
|
2017-10-17 18:59:36 +00:00
|
|
|
else
|
|
|
|
disk_name=${disk%%_*}
|
2019-09-11 09:29:55 +00:00
|
|
|
if ! $rpc_py bdev_get_bdevs | jq -r '.[] .name' | grep -qi $disk_name$; then
|
2017-12-18 19:45:33 +00:00
|
|
|
fail "$disk_name bdev not found!"
|
2017-10-17 18:59:36 +00:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2020-05-07 11:27:06 +00:00
|
|
|
#Create controller and create file on disk for later test
|
2017-12-18 19:45:33 +00:00
|
|
|
notice "Creating vhost_blk controller"
|
2017-10-17 18:59:36 +00:00
|
|
|
vhost_blk_name="naa.$disk_name.$vm_no"
|
2019-09-30 10:51:55 +00:00
|
|
|
$rpc_py vhost_create_blk_controller $vhost_blk_name $disk_name
|
2018-03-06 07:30:06 +00:00
|
|
|
vm_setup --disk-type=spdk_vhost_blk --force=$vm_no --os=$vm_img --disks=$disk --read-only=true
|
2017-10-17 18:59:36 +00:00
|
|
|
|
2017-12-28 15:24:44 +00:00
|
|
|
vm_run $vm_no
|
2019-03-25 13:14:55 +00:00
|
|
|
vm_wait_for_boot 300 $vm_no
|
2018-01-17 02:32:46 +00:00
|
|
|
notice "Preparing partition and file on guest VM"
|
2019-06-04 22:00:09 +00:00
|
|
|
vm_exec $vm_no "bash -s" < $testdir/disabled_readonly_vm.sh
|
2017-10-17 18:59:36 +00:00
|
|
|
sleep 1
|
|
|
|
|
|
|
|
vm_shutdown_all
|
2020-05-07 11:27:06 +00:00
|
|
|
#Create readonly controller and test readonly feature
|
2017-12-18 19:45:33 +00:00
|
|
|
notice "Removing controller and creating new one with readonly flag"
|
2019-09-30 11:01:44 +00:00
|
|
|
$rpc_py vhost_delete_controller $vhost_blk_name
|
2019-09-30 10:51:55 +00:00
|
|
|
$rpc_py vhost_create_blk_controller -r $vhost_blk_name $disk_name
|
2017-10-17 18:59:36 +00:00
|
|
|
|
2017-12-28 15:24:44 +00:00
|
|
|
vm_run $vm_no
|
2019-03-25 13:14:55 +00:00
|
|
|
vm_wait_for_boot 300 $vm_no
|
2017-12-18 19:45:33 +00:00
|
|
|
notice "Testing readonly feature on guest VM"
|
2019-06-04 22:00:09 +00:00
|
|
|
vm_exec $vm_no "bash -s" < $testdir/enabled_readonly_vm.sh
|
2018-01-17 02:32:46 +00:00
|
|
|
sleep 3
|
2017-10-17 18:59:36 +00:00
|
|
|
|
|
|
|
vm_shutdown_all
|
2020-05-07 11:27:06 +00:00
|
|
|
#Delete file from disk and delete partition
|
2017-10-17 18:59:36 +00:00
|
|
|
echo "INFO: Removing controller and creating new one"
|
2019-09-30 11:01:44 +00:00
|
|
|
$rpc_py vhost_delete_controller $vhost_blk_name
|
2019-09-30 10:51:55 +00:00
|
|
|
$rpc_py vhost_create_blk_controller $vhost_blk_name $disk_name
|
2017-10-17 18:59:36 +00:00
|
|
|
|
2017-12-28 15:24:44 +00:00
|
|
|
vm_run $vm_no
|
2019-03-25 13:14:55 +00:00
|
|
|
vm_wait_for_boot 300 $vm_no
|
2018-01-17 02:32:46 +00:00
|
|
|
notice "Removing partition and file from test disk on guest VM"
|
2019-06-04 22:00:09 +00:00
|
|
|
vm_exec $vm_no "bash -s" < $testdir/delete_partition_vm.sh
|
2017-10-17 18:59:36 +00:00
|
|
|
sleep 1
|
|
|
|
|
|
|
|
vm_shutdown_all
|
|
|
|
}
|
|
|
|
|
2021-03-03 17:34:59 +00:00
|
|
|
vhost_run -n 0
|
2017-10-17 18:59:36 +00:00
|
|
|
if [[ -z $x ]]; then
|
|
|
|
set +x
|
|
|
|
fi
|
|
|
|
|
|
|
|
blk_ro_tc1
|
2018-07-26 12:54:20 +00:00
|
|
|
|
2019-08-23 15:12:13 +00:00
|
|
|
$rpc_py bdev_nvme_detach_controller Nvme0
|
2018-07-26 12:54:20 +00:00
|
|
|
|
2019-06-04 20:55:21 +00:00
|
|
|
vhost_kill 0
|
2019-05-17 21:09:40 +00:00
|
|
|
|
|
|
|
vhosttestfini
|