test: Shellcheck - apply rule SC2155

Declare and assign separately to avoid masking return values.

Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Change-Id: Ib90598e4268911a3056e8a0baa7d541edaa29b91
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/472287
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Pawel Kaminski 2019-10-24 13:58:04 +00:00 committed by Jim Harris
parent c9c576912d
commit 074df1d896
18 changed files with 152 additions and 84 deletions

View File

@ -243,7 +243,7 @@ if hash shellcheck 2>/dev/null; then
SHCK_EXCLUDE="SC1083,SC2002,\ SHCK_EXCLUDE="SC1083,SC2002,\
SC2010,SC2012,SC2016,SC2034,SC2045,SC2046,SC2068,SC2086,SC2089,SC2090,\ SC2010,SC2012,SC2016,SC2034,SC2045,SC2046,SC2068,SC2086,SC2089,SC2090,\
SC2097,SC2098,SC2119,SC2120,SC2128,\ SC2097,SC2098,SC2119,SC2120,SC2128,\
SC2129,SC2140,SC2142,SC2143,SC2154,SC2155" SC2129,SC2140,SC2142,SC2143,SC2154"
# SPDK fails some error checks which have been deprecated in later versions of shellcheck. # SPDK fails some error checks which have been deprecated in later versions of shellcheck.
# We will not try to fix these error checks, but instead just leave the error types here # We will not try to fix these error checks, but instead just leave the error types here
# so that we can still run with older versions of shellcheck. # so that we can still run with older versions of shellcheck.

View File

@ -30,9 +30,12 @@ function pci_can_use() {
# This function will ignore PCI PCI_WHITELIST and PCI_BLACKLIST # This function will ignore PCI PCI_WHITELIST and PCI_BLACKLIST
function iter_all_pci_class_code() { function iter_all_pci_class_code() {
local class="$(printf %02x $((0x$1)))" local class
local subclass="$(printf %02x $((0x$2)))" local subclass
local progif="$(printf %02x $((0x$3)))" local progif
class="$(printf %02x $((0x$1)))"
subclass="$(printf %02x $((0x$2)))"
progif="$(printf %02x $((0x$3)))"
if hash lspci &>/dev/null; then if hash lspci &>/dev/null; then
if [ "$progif" != "00" ]; then if [ "$progif" != "00" ]; then
@ -57,8 +60,10 @@ function iter_all_pci_class_code() {
# This function will ignore PCI PCI_WHITELIST and PCI_BLACKLIST # This function will ignore PCI PCI_WHITELIST and PCI_BLACKLIST
function iter_all_pci_dev_id() { function iter_all_pci_dev_id() {
local ven_id="$(printf %04x $((0x$1)))" local ven_id
local dev_id="$(printf %04x $((0x$2)))" local dev_id
ven_id="$(printf %04x $((0x$1)))"
dev_id="$(printf %04x $((0x$2)))"
if hash lspci &>/dev/null; then if hash lspci &>/dev/null; then
lspci -mm -n -D | awk -v ven="\"$ven_id\"" -v dev="\"${dev_id}\"" -F " " \ lspci -mm -n -D | awk -v ven="\"$ven_id\"" -v dev="\"${dev_id}\"" -F " " \

View File

@ -79,8 +79,10 @@ function check_for_driver {
function pci_dev_echo() { function pci_dev_echo() {
local bdf="$1" local bdf="$1"
local vendor="$(cat /sys/bus/pci/devices/$bdf/vendor)" local vendor
local device="$(cat /sys/bus/pci/devices/$bdf/device)" local device
vendor="$(cat /sys/bus/pci/devices/$bdf/vendor)"
device="$(cat /sys/bus/pci/devices/$bdf/device)"
shift shift
echo "$bdf (${vendor#0x} ${device#0x}): $*" echo "$bdf (${vendor#0x} ${device#0x}): $*"
} }
@ -118,7 +120,8 @@ function linux_bind_driver() {
function linux_unbind_driver() { function linux_unbind_driver() {
local bdf="$1" local bdf="$1"
local ven_dev_id=$(lspci -n -s $bdf | cut -d' ' -f3 | sed 's/:/ /') local ven_dev_id
ven_dev_id=$(lspci -n -s $bdf | cut -d' ' -f3 | sed 's/:/ /')
local old_driver_name="no driver" local old_driver_name="no driver"
if [ -e "/sys/bus/pci/devices/$bdf/driver" ]; then if [ -e "/sys/bus/pci/devices/$bdf/driver" ]; then

View File

@ -13,7 +13,8 @@ function raid_unmap_data_verify() {
if hash blkdiscard; then if hash blkdiscard; then
local nbd=$1 local nbd=$1
local rpc_server=$2 local rpc_server=$2
local blksize=$(lsblk -o LOG-SEC $nbd | grep -v LOG-SEC | cut -d ' ' -f 5) local blksize
blksize=$(lsblk -o LOG-SEC $nbd | grep -v LOG-SEC | cut -d ' ' -f 5)
local rw_blk_num=4096 local rw_blk_num=4096
local rw_len=$((blksize * rw_blk_num)) local rw_len=$((blksize * rw_blk_num))
local unmap_blk_offs=(0 1028 321) local unmap_blk_offs=(0 1028 321)

View File

@ -462,7 +462,8 @@ function killprocess() {
if [ "$(ps --no-headers -o comm= $1)" = "sudo" ]; then if [ "$(ps --no-headers -o comm= $1)" = "sudo" ]; then
# kill the child process, which is the actual app # kill the child process, which is the actual app
# (assume $1 has just one child) # (assume $1 has just one child)
local child="$(pgrep -P $1)" local child
child="$(pgrep -P $1)"
echo "killing process with pid $child" echo "killing process with pid $child"
kill $child kill $child
else else
@ -559,7 +560,8 @@ function kill_stub() {
function run_test() { function run_test() {
xtrace_disable xtrace_disable
local test_type="$(echo $1 | tr '[:lower:]' '[:upper:]')" local test_type
test_type="$(echo $1 | tr '[:lower:]' '[:upper:]')"
shift shift
echo "************************************" echo "************************************"
echo "START TEST $test_type $*" echo "START TEST $test_type $*"
@ -806,7 +808,8 @@ function fio_bdev()
local bdev_plugin="$rootdir/examples/bdev/fio_plugin/fio_plugin" local bdev_plugin="$rootdir/examples/bdev/fio_plugin/fio_plugin"
# Preload AddressSanitizer library to fio if fio_plugin was compiled with it # Preload AddressSanitizer library to fio if fio_plugin was compiled with it
local asan_lib=$(ldd $bdev_plugin | grep libasan | awk '{print $3}') local asan_lib
asan_lib=$(ldd $bdev_plugin | grep libasan | awk '{print $3}')
LD_PRELOAD="$asan_lib $bdev_plugin" "$fio_dir"/fio "$@" LD_PRELOAD="$asan_lib $bdev_plugin" "$fio_dir"/fio "$@"
} }
@ -826,9 +829,12 @@ function fio_nvme()
function get_lvs_free_mb() function get_lvs_free_mb()
{ {
local lvs_uuid=$1 local lvs_uuid=$1
local lvs_info=$($rpc_py bdev_lvol_get_lvstores) local lvs_info
local fc=$(jq ".[] | select(.uuid==\"$lvs_uuid\") .free_clusters" <<< "$lvs_info") local fc
local cs=$(jq ".[] | select(.uuid==\"$lvs_uuid\") .cluster_size" <<< "$lvs_info") local cs
lvs_info=$($rpc_py bdev_lvol_get_lvstores)
fc=$(jq ".[] | select(.uuid==\"$lvs_uuid\") .free_clusters" <<< "$lvs_info")
cs=$(jq ".[] | select(.uuid==\"$lvs_uuid\") .cluster_size" <<< "$lvs_info")
# Change to MB's # Change to MB's
free_mb=$((fc*cs/1024/1024)) free_mb=$((fc*cs/1024/1024))
@ -838,9 +844,12 @@ function get_lvs_free_mb()
function get_bdev_size() function get_bdev_size()
{ {
local bdev_name=$1 local bdev_name=$1
local bdev_info=$($rpc_py bdev_get_bdevs -b $bdev_name) local bdev_info
local bs=$(jq ".[] .block_size" <<< "$bdev_info") local bs
local nb=$(jq ".[] .num_blocks" <<< "$bdev_info") local nb
bdev_info=$($rpc_py bdev_get_bdevs -b $bdev_name)
bs=$(jq ".[] .block_size" <<< "$bdev_info")
nb=$(jq ".[] .num_blocks" <<< "$bdev_info")
# Change to MB's # Change to MB's
bdev_size=$((bs*nb/1024/1024)) bdev_size=$((bs*nb/1024/1024))

View File

@ -6,7 +6,8 @@ function get_chunk_size() {
} }
function has_separate_md() { function has_separate_md() {
local md_type=$($rootdir/examples/nvme/identify/identify -r "trtype:PCIe traddr:$1" | \ local md_type
md_type=$($rootdir/examples/nvme/identify/identify -r "trtype:PCIe traddr:$1" | \
grep 'Metadata Transferred' | cut -d: -f2) grep 'Metadata Transferred' | cut -d: -f2)
if [[ "$md_type" =~ Separate ]]; then if [[ "$md_type" =~ Separate ]]; then
return 0 return 0
@ -22,7 +23,8 @@ function create_nv_cache_bdev() {
local num_punits=$4 local num_punits=$4
local bytes_to_mb=$((1024 * 1024)) local bytes_to_mb=$((1024 * 1024))
local chunk_size=$(get_chunk_size $ocssd_bdf) local chunk_size
chunk_size=$(get_chunk_size $ocssd_bdf)
# We need at least 2 bands worth of data + 1 block # We need at least 2 bands worth of data + 1 block
local size=$((2 * 4096 * chunk_size * num_punits + 1)) local size=$((2 * 4096 * chunk_size * num_punits + 1))
@ -30,6 +32,7 @@ function create_nv_cache_bdev() {
local size=$(((size + bytes_to_mb) / bytes_to_mb)) local size=$(((size + bytes_to_mb) / bytes_to_mb))
# Create NVMe bdev on specified device and split it so that it has the desired size # Create NVMe bdev on specified device and split it so that it has the desired size
local nvc_bdev=$($rootdir/scripts/rpc.py bdev_nvme_attach_controller -b $name -t PCIe -a $cache_bdf) local nvc_bdev
nvc_bdev=$($rootdir/scripts/rpc.py bdev_nvme_attach_controller -b $name -t PCIe -a $cache_bdf)
$rootdir/scripts/rpc.py bdev_split_create $nvc_bdev -s $size 1 $rootdir/scripts/rpc.py bdev_split_create $nvc_bdev -s $size 1
} }

View File

@ -11,17 +11,22 @@ iscsitestinit $1 $2
function run_fio() { function run_fio() {
local bdev_name=$1 local bdev_name=$1
local iostats=$($rpc_py bdev_get_iostat -b $bdev_name) local iostats
local start_io_count
local start_bytes_read
local end_io_count
local end_bytes_read
local run_time=5 local run_time=5
local start_io_count=$(jq -r '.bdevs[0].num_read_ops' <<< "$iostats") iostats=$($rpc_py bdev_get_iostat -b $bdev_name)
local start_bytes_read=$(jq -r '.bdevs[0].bytes_read' <<< "$iostats") start_io_count=$(jq -r '.bdevs[0].num_read_ops' <<< "$iostats")
start_bytes_read=$(jq -r '.bdevs[0].bytes_read' <<< "$iostats")
$fio_py -p iscsi -i 1024 -d 128 -t randread -r $run_time $fio_py -p iscsi -i 1024 -d 128 -t randread -r $run_time
iostats=$($rpc_py bdev_get_iostat -b $bdev_name) iostats=$($rpc_py bdev_get_iostat -b $bdev_name)
local end_io_count=$(jq -r '.bdevs[0].num_read_ops' <<< "$iostats") end_io_count=$(jq -r '.bdevs[0].num_read_ops' <<< "$iostats")
local end_bytes_read=$(jq -r '.bdevs[0].bytes_read' <<< "$iostats") end_bytes_read=$(jq -r '.bdevs[0].bytes_read' <<< "$iostats")
IOPS_RESULT=$(((end_io_count-start_io_count)/run_time)) IOPS_RESULT=$(((end_io_count-start_io_count)/run_time))
BANDWIDTH_RESULT=$(((end_bytes_read-start_bytes_read)/run_time)) BANDWIDTH_RESULT=$(((end_bytes_read-start_bytes_read)/run_time))

View File

@ -10,7 +10,8 @@ if [ -z "${DEPENDENCY_DIR}" ]; then
fi fi
function ssh_vm() { function ssh_vm() {
local shell_restore_x="$( [[ "$-" =~ x ]] && echo 'set -x' )" local shell_restore_x
shell_restore_x="$( [[ "$-" =~ x ]] && echo 'set -x' )"
set +x set +x
sshpass -p "$password" ssh -o PubkeyAuthentication=no \ sshpass -p "$password" ssh -o PubkeyAuthentication=no \
-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 10022 root@localhost "$@" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -p 10022 root@localhost "$@"

View File

@ -28,8 +28,10 @@ NOIOSCALING=false
function is_bdf_not_mounted() { function is_bdf_not_mounted() {
local bdf=$1 local bdf=$1
local blkname=$(ls -l /sys/block/ | grep $bdf | awk '{print $9}') local blkname
local mountpoints=$(lsblk /dev/$blkname --output MOUNTPOINT -n | wc -w) local mountpoints
blkname=$(ls -l /sys/block/ | grep $bdf | awk '{print $9}')
mountpoints=$(lsblk /dev/$blkname --output MOUNTPOINT -n | wc -w)
return $mountpoints return $mountpoints
} }
@ -52,16 +54,19 @@ function get_numa_node(){
local disks=$2 local disks=$2
if [ "$plugin" = "nvme" ]; then if [ "$plugin" = "nvme" ]; then
for bdf in $disks; do for bdf in $disks; do
local driver=$(grep DRIVER /sys/bus/pci/devices/$bdf/uevent |awk -F"=" '{print $2}') local driver
driver=$(grep DRIVER /sys/bus/pci/devices/$bdf/uevent |awk -F"=" '{print $2}')
# Use this check to ommit blacklisted devices ( not binded to driver with setup.sh script ) # Use this check to ommit blacklisted devices ( not binded to driver with setup.sh script )
if [ "$driver" = "vfio-pci" ] || [ "$driver" = "uio_pci_generic" ]; then if [ "$driver" = "vfio-pci" ] || [ "$driver" = "uio_pci_generic" ]; then
cat /sys/bus/pci/devices/$bdf/numa_node cat /sys/bus/pci/devices/$bdf/numa_node
fi fi
done done
elif [ "$plugin" = "bdev" ] || [ "$plugin" = "bdevperf" ]; then elif [ "$plugin" = "bdev" ] || [ "$plugin" = "bdevperf" ]; then
local bdevs=$(discover_bdevs $ROOT_DIR $BASE_DIR/bdev.conf) local bdevs
bdevs=$(discover_bdevs $ROOT_DIR $BASE_DIR/bdev.conf)
for name in $disks; do for name in $disks; do
local bdev_bdf=$(jq -r ".[] | select(.name==\"$name\").driver_specific.nvme.pci_address" <<< $bdevs) local bdev_bdf
bdev_bdf=$(jq -r ".[] | select(.name==\"$name\").driver_specific.nvme.pci_address" <<< $bdevs)
cat /sys/bus/pci/devices/$bdev_bdf/numa_node cat /sys/bus/pci/devices/$bdev_bdf/numa_node
done done
else else
@ -84,13 +89,15 @@ function get_disks(){
fi fi
done done
elif [ "$plugin" = "bdev" ] || [ "$plugin" = "bdevperf" ]; then elif [ "$plugin" = "bdev" ] || [ "$plugin" = "bdevperf" ]; then
local bdevs=$(discover_bdevs $ROOT_DIR $BASE_DIR/bdev.conf) local bdevs
bdevs=$(discover_bdevs $ROOT_DIR $BASE_DIR/bdev.conf)
jq -r '.[].name' <<< $bdevs jq -r '.[].name' <<< $bdevs
else else
# Only target not mounted NVMes # Only target not mounted NVMes
for bdf in $(iter_pci_class_code 01 08 02); do for bdf in $(iter_pci_class_code 01 08 02); do
if is_bdf_not_mounted $bdf; then if is_bdf_not_mounted $bdf; then
local blkname=$(ls -l /sys/block/ | grep $bdf | awk '{print $9}') local blkname
blkname=$(ls -l /sys/block/ | grep $bdf | awk '{print $9}')
echo $blkname echo $blkname
fi fi
done done
@ -123,7 +130,8 @@ function create_fio_config(){
local no_cores=${#cores[@]} local no_cores=${#cores[@]}
local filename="" local filename=""
local cores_numa=($(get_cores_numa_node "$5")) local cores_numa
cores_numa=($(get_cores_numa_node "$5"))
local disks_per_core=$((disk_no/no_cores)) local disks_per_core=$((disk_no/no_cores))
local disks_per_core_mod=$((disk_no%no_cores)) local disks_per_core_mod=$((disk_no%no_cores))
@ -202,7 +210,8 @@ function preconditioning(){
# We only want to target NVMes not bound to nvme driver. # We only want to target NVMes not bound to nvme driver.
# If they're still bound to nvme that means they were skipped by # If they're still bound to nvme that means they were skipped by
# setup.sh on purpose. # setup.sh on purpose.
local nvme_list=$(get_disks nvme) local nvme_list
nvme_list=$(get_disks nvme)
for nvme in $nvme_list; do for nvme in $nvme_list; do
dev_name='trtype=PCIe traddr='${nvme//:/.}' ns=1' dev_name='trtype=PCIe traddr='${nvme//:/.}' ns=1'
filename+=$(printf %s":" "$dev_name") filename+=$(printf %s":" "$dev_name")

View File

@ -258,7 +258,8 @@ function check_ip_is_soft_roce()
function nvme_connect() function nvme_connect()
{ {
local init_count=$(nvme list | wc -l) local init_count
init_count=$(nvme list | wc -l)
if ! nvme connect $@; then return $?; fi if ! nvme connect $@; then return $?; fi

View File

@ -79,7 +79,8 @@ function vhost_start()
function vhost_kill() function vhost_kill()
{ {
local vhost_pid_file="$testdir/vhost.pid" local vhost_pid_file="$testdir/vhost.pid"
local vhost_pid="$(cat $vhost_pid_file)" local vhost_pid
vhost_pid="$(cat $vhost_pid_file)"
if [[ ! -f $vhost_pid_file ]]; then if [[ ! -f $vhost_pid_file ]]; then
echo -e "ERROR: No vhost pid file found!" echo -e "ERROR: No vhost pid file found!"

View File

@ -55,12 +55,13 @@ function vhosttestfini()
function message() function message()
{ {
local verbose_out
if ! $SPDK_VHOST_VERBOSE; then if ! $SPDK_VHOST_VERBOSE; then
local verbose_out="" verbose_out=""
elif [[ ${FUNCNAME[2]} == "source" ]]; then elif [[ ${FUNCNAME[2]} == "source" ]]; then
local verbose_out=" (file $(basename ${BASH_SOURCE[1]}):${BASH_LINENO[1]})" verbose_out=" (file $(basename ${BASH_SOURCE[1]}):${BASH_LINENO[1]})"
else else
local verbose_out=" (function ${FUNCNAME[2]}:${BASH_LINENO[1]})" verbose_out=" (function ${FUNCNAME[2]}:${BASH_LINENO[1]})"
fi fi
local msg_type="$1" local msg_type="$1"
@ -124,7 +125,8 @@ function vhost_run()
shift shift
fi fi
local vhost_dir="$(get_vhost_dir $vhost_name)" local vhost_dir
vhost_dir="$(get_vhost_dir $vhost_name)"
local vhost_app="$rootdir/app/vhost/vhost" local vhost_app="$rootdir/app/vhost/vhost"
local vhost_log_file="$vhost_dir/vhost.log" local vhost_log_file="$vhost_dir/vhost.log"
local vhost_pid_file="$vhost_dir/vhost.pid" local vhost_pid_file="$vhost_dir/vhost.pid"
@ -166,7 +168,8 @@ function vhost_load_config()
{ {
local vhost_num="$1" local vhost_num="$1"
local vhost_json_conf="$2" local vhost_json_conf="$2"
local vhost_dir="$(get_vhost_dir $vhost_num)" local vhost_dir
vhost_dir="$(get_vhost_dir $vhost_num)"
$rootdir/scripts/rpc.py -s $vhost_dir/rpc.sock load_config < "$vhost_json_conf" $rootdir/scripts/rpc.py -s $vhost_dir/rpc.sock load_config < "$vhost_json_conf"
} }
@ -181,7 +184,8 @@ function vhost_kill()
return 0 return 0
fi fi
local vhost_dir="$(get_vhost_dir $vhost_name)" local vhost_dir
vhost_dir="$(get_vhost_dir $vhost_name)"
local vhost_pid_file="$vhost_dir/vhost.pid" local vhost_pid_file="$vhost_dir/vhost.pid"
if [[ ! -r $vhost_pid_file ]]; then if [[ ! -r $vhost_pid_file ]]; then
@ -190,7 +194,8 @@ function vhost_kill()
fi fi
timing_enter vhost_kill timing_enter vhost_kill
local vhost_pid="$(cat $vhost_pid_file)" local vhost_pid
vhost_pid="$(cat $vhost_pid_file)"
notice "killing vhost (PID $vhost_pid) app" notice "killing vhost (PID $vhost_pid) app"
if kill -INT $vhost_pid > /dev/null; then if kill -INT $vhost_pid > /dev/null; then
@ -263,7 +268,8 @@ function vm_sshpass()
{ {
vm_num_is_valid $1 || return 1 vm_num_is_valid $1 || return 1
local ssh_cmd="sshpass -p $2 ssh \ local ssh_cmd
ssh_cmd="sshpass -p $2 ssh \
-o UserKnownHostsFile=/dev/null \ -o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no \ -o StrictHostKeyChecking=no \
-o User=root \ -o User=root \
@ -353,7 +359,8 @@ function vm_is_running()
return 1 return 1
fi fi
local vm_pid="$(cat $vm_dir/qemu.pid)" local vm_pid
vm_pid="$(cat $vm_dir/qemu.pid)"
if /bin/kill -0 $vm_pid; then if /bin/kill -0 $vm_pid; then
return 0 return 0
@ -429,7 +436,8 @@ function vm_kill()
return 0 return 0
fi fi
local vm_pid="$(cat $vm_dir/qemu.pid)" local vm_pid
vm_pid="$(cat $vm_dir/qemu.pid)"
notice "Killing virtual machine $vm_dir (pid=$vm_pid)" notice "Killing virtual machine $vm_dir (pid=$vm_pid)"
# First kill should fail, second one must fail # First kill should fail, second one must fail
@ -447,7 +455,8 @@ function vm_kill()
# #
function vm_list_all() function vm_list_all()
{ {
local vms="$(shopt -s nullglob; echo $VM_DIR/[0-9]*)" local vms
vms="$(shopt -s nullglob; echo $VM_DIR/[0-9]*)"
if [[ -n "$vms" ]]; then if [[ -n "$vms" ]]; then
basename --multiple $vms basename --multiple $vms
fi fi
@ -469,11 +478,13 @@ function vm_kill_all()
# #
function vm_shutdown_all() function vm_shutdown_all()
{ {
local shell_restore_x="$( [[ "$-" =~ x ]] && echo 'set -x' )" local shell_restore_x
shell_restore_x="$( [[ "$-" =~ x ]] && echo 'set -x' )"
# XXX: temporally disable to debug shutdown issue # XXX: temporally disable to debug shutdown issue
# set +x # set +x
local vms=$(vm_list_all) local vms
vms=$(vm_list_all)
local vm local vm
for vm in $vms; do for vm in $vms; do
@ -510,7 +521,8 @@ function vm_shutdown_all()
function vm_setup() function vm_setup()
{ {
local shell_restore_x="$( [[ "$-" =~ x ]] && echo 'set -x' )" local shell_restore_x
shell_restore_x="$( [[ "$-" =~ x ]] && echo 'set -x' )"
local OPTIND optchar vm_num local OPTIND optchar vm_num
local os="" local os=""
@ -525,24 +537,25 @@ function vm_setup()
local force_vm="" local force_vm=""
local guest_memory=1024 local guest_memory=1024
local queue_number="" local queue_number=""
local vhost_dir="$(get_vhost_dir 0)" local vhost_dir
vhost_dir="$(get_vhost_dir 0)"
while getopts ':-:' optchar; do while getopts ':-:' optchar; do
case "$optchar" in case "$optchar" in
-) -)
case "$OPTARG" in case "$OPTARG" in
os=*) local os="${OPTARG#*=}" ;; os=*) os="${OPTARG#*=}" ;;
os-mode=*) local os_mode="${OPTARG#*=}" ;; os-mode=*) os_mode="${OPTARG#*=}" ;;
qemu-args=*) local qemu_args="${qemu_args} ${OPTARG#*=}" ;; qemu-args=*) qemu_args="${qemu_args} ${OPTARG#*=}" ;;
disk-type=*) local disk_type_g="${OPTARG#*=}" ;; disk-type=*) disk_type_g="${OPTARG#*=}" ;;
read-only=*) local read_only="${OPTARG#*=}" ;; read-only=*) read_only="${OPTARG#*=}" ;;
disks=*) local disks="${OPTARG#*=}" ;; disks=*) disks="${OPTARG#*=}" ;;
raw-cache=*) local raw_cache=",cache${OPTARG#*=}" ;; raw-cache=*) raw_cache=",cache${OPTARG#*=}" ;;
force=*) local force_vm=${OPTARG#*=} ;; force=*) force_vm=${OPTARG#*=} ;;
memory=*) local guest_memory=${OPTARG#*=} ;; memory=*) guest_memory=${OPTARG#*=} ;;
queue_num=*) local queue_number=${OPTARG#*=} ;; queue_num=*) queue_number=${OPTARG#*=} ;;
incoming=*) local vm_incoming="${OPTARG#*=}" ;; incoming=*) vm_incoming="${OPTARG#*=}" ;;
migrate-to=*) local vm_migrate_to="${OPTARG#*=}" ;; migrate-to=*) vm_migrate_to="${OPTARG#*=}" ;;
vhost-name=*) local vhost_dir="$(get_vhost_dir ${OPTARG#*=})" ;; vhost-name=*) vhost_dir="$(get_vhost_dir ${OPTARG#*=})" ;;
spdk-boot=*) local boot_from="${OPTARG#*=}" ;; spdk-boot=*) local boot_from="${OPTARG#*=}" ;;
*) *)
error "unknown argument $OPTARG" error "unknown argument $OPTARG"
@ -709,7 +722,8 @@ function vm_setup()
if [[ -n $disk ]]; then if [[ -n $disk ]]; then
[[ ! -b $disk ]] && touch $disk [[ ! -b $disk ]] && touch $disk
local raw_disk=$(readlink -f $disk) local raw_disk
raw_disk=$(readlink -f $disk)
fi fi
# Create disk file if it not exist or it is smaller than 1G # Create disk file if it not exist or it is smaller than 1G
@ -897,13 +911,15 @@ function vm_wait_for_boot()
{ {
assert_number $1 assert_number $1
local shell_restore_x="$( [[ "$-" =~ x ]] && echo 'set -x' )" local shell_restore_x
shell_restore_x="$( [[ "$-" =~ x ]] && echo 'set -x' )"
set +x set +x
local all_booted=false local all_booted=false
local timeout_time=$1 local timeout_time=$1
[[ $timeout_time -lt 10 ]] && timeout_time=10 [[ $timeout_time -lt 10 ]] && timeout_time=10
local timeout_time=$(date -d "+$timeout_time seconds" +%s) local timeout_time
timeout_time=$(date -d "+$timeout_time seconds" +%s)
notice "Waiting for VMs to boot" notice "Waiting for VMs to boot"
shift shift
@ -917,7 +933,8 @@ function vm_wait_for_boot()
fi fi
for vm in $vms_to_check; do for vm in $vms_to_check; do
local vm_num=$(basename $vm) local vm_num
vm_num=$(basename $vm)
local i=0 local i=0
notice "waiting for VM$vm_num ($vm)" notice "waiting for VM$vm_num ($vm)"
while ! vm_os_booted $vm_num; do while ! vm_os_booted $vm_num; do
@ -945,7 +962,8 @@ function vm_wait_for_boot()
notice "VM$vm_num ready" notice "VM$vm_num ready"
#Change Timeout for stopping services to prevent lengthy powerdowns #Change Timeout for stopping services to prevent lengthy powerdowns
#Check that remote system is not Cygwin in case of Windows VMs #Check that remote system is not Cygwin in case of Windows VMs
local vm_os=$(vm_exec $vm_num "uname -o") local vm_os
vm_os=$(vm_exec $vm_num "uname -o")
if [[ "$vm_os" != "Cygwin" ]]; then if [[ "$vm_os" != "Cygwin" ]]; then
vm_exec $vm_num "echo 'DefaultTimeoutStopSec=10' >> /etc/systemd/system.conf; systemctl daemon-reexec" vm_exec $vm_num "echo 'DefaultTimeoutStopSec=10' >> /etc/systemd/system.conf; systemctl daemon-reexec"
fi fi
@ -1066,7 +1084,8 @@ function run_fio()
return 1 return 1
fi fi
local job_fname=$(basename "$job_file") local job_fname
job_fname=$(basename "$job_file")
# prepare job file for each VM # prepare job file for each VM
for vm in ${vms[@]}; do for vm in ${vms[@]}; do
local vm_num=${vm%%:*} local vm_num=${vm%%:*}

View File

@ -199,7 +199,8 @@ function check_disks() {
function get_traddr() { function get_traddr() {
local nvme_name=$1 local nvme_name=$1
local nvme="$( $rootdir/scripts/gen_nvme.sh )" local nvme
nvme="$( $rootdir/scripts/gen_nvme.sh )"
while read -r line; do while read -r line; do
if [[ $line == *"TransportID"* ]] && [[ $line == *$nvme_name* ]]; then if [[ $line == *"TransportID"* ]] && [[ $line == *$nvme_name* ]]; then
local word_array=($line) local word_array=($line)

View File

@ -105,8 +105,10 @@ function migration_tc2_configure_vhost()
vhost_run 0 "-m 0x1 -s 512 -u" vhost_run 0 "-m 0x1 -s 512 -u"
vhost_run 1 "-m 0x2 -s 512 -u" vhost_run 1 "-m 0x2 -s 512 -u"
local rdma_ip_list=$(get_available_rdma_ips) local rdma_ip_list
local nvmf_target_ip=$(echo "$rdma_ip_list" | head -n 1) local nvmf_target_ip
rdma_ip_list=$(get_available_rdma_ips)
nvmf_target_ip=$(echo "$rdma_ip_list" | head -n 1)
if [[ -z "$nvmf_target_ip" ]]; then if [[ -z "$nvmf_target_ip" ]]; then
fail "no NIC for nvmf target" fail "no NIC for nvmf target"

View File

@ -55,7 +55,8 @@ function wait_for_remote()
function check_rdma_connection() function check_rdma_connection()
{ {
local nic_name=$(ip -4 -o addr show to $RDMA_TARGET_IP up | cut -d' ' -f2) local nic_name
nic_name=$(ip -4 -o addr show to $RDMA_TARGET_IP up | cut -d' ' -f2)
if [[ -z $nic_name ]]; then if [[ -z $nic_name ]]; then
error "There is no NIC with IP address $RDMA_TARGET_IP configured" error "There is no NIC with IP address $RDMA_TARGET_IP configured"
fi fi

View File

@ -67,7 +67,8 @@ function vm_monitor_send()
local vm_num=$1 local vm_num=$1
local cmd_result_file="$2" local cmd_result_file="$2"
local vm_dir="$VM_DIR/$1" local vm_dir="$VM_DIR/$1"
local vm_monitor_port=$(cat $vm_dir/monitor_port) local vm_monitor_port
vm_monitor_port=$(cat $vm_dir/monitor_port)
[[ -n "$vm_monitor_port" ]] || fail "No monitor port!" [[ -n "$vm_monitor_port" ]] || fail "No monitor port!"
@ -79,9 +80,12 @@ function vm_monitor_send()
function vm_migrate() function vm_migrate()
{ {
local from_vm_dir="$VM_DIR/$1" local from_vm_dir="$VM_DIR/$1"
local target_vm_dir="$(readlink -e $from_vm_dir/vm_migrate_to)" local target_vm_dir
local target_vm="$(basename $target_vm_dir)" local target_vm
local target_vm_migration_port="$(cat $target_vm_dir/migration_port)" local target_vm_migration_port
target_vm_dir="$(readlink -e $from_vm_dir/vm_migrate_to)"
target_vm="$(basename $target_vm_dir)"
target_vm_migration_port="$(cat $target_vm_dir/migration_port)"
if [[ -n "$2" ]]; then if [[ -n "$2" ]]; then
local target_ip=$2 local target_ip=$2
else else
@ -123,7 +127,8 @@ function vm_migrate()
function is_fio_running() function is_fio_running()
{ {
local shell_restore_x="$( [[ "$-" =~ x ]] && echo 'set -x' )" local shell_restore_x
shell_restore_x="$( [[ "$-" =~ x ]] && echo 'set -x' )"
set +x set +x
if vm_exec $1 'kill -0 $(cat /root/fio.pid)'; then if vm_exec $1 'kill -0 $(cat /root/fio.pid)'; then

View File

@ -95,7 +95,8 @@ function cleanup_split_cfg()
function cleanup_parted_config() function cleanup_parted_config()
{ {
local disks=$(ls /dev/nvme*n1 | sort --version-sort) local disks
disks=$(ls /dev/nvme*n1 | sort --version-sort)
for disk in $disks; do for disk in $disks; do
parted -s $disk rm 1 parted -s $disk rm 1
done done

View File

@ -57,7 +57,8 @@ function vm_sshpass()
{ {
vm_num_is_valid $1 || return 1 vm_num_is_valid $1 || return 1
local ssh_cmd="sshpass -p $2 ssh \ local ssh_cmd
ssh_cmd="sshpass -p $2 ssh \
-o UserKnownHostsFile=/dev/null \ -o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no \ -o StrictHostKeyChecking=no \
-o User=root \ -o User=root \