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:
parent
c9c576912d
commit
074df1d896
@ -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.
|
||||||
|
@ -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 " " \
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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))
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
@ -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))
|
||||||
|
@ -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 "$@"
|
||||||
|
@ -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")
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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!"
|
||||||
|
@ -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%%:*}
|
||||||
|
@ -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)
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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 \
|
||||||
|
Loading…
Reference in New Issue
Block a user