blob: 24f5248a45b406e586c0bde49a81aaa3cb6a91c3 [file] [log] [blame] [edit]
#!/bin/bash
# SPDX-License-Identifier: MIT or GPL-2.0-only
export LO_IMG_SZ=1G
_create_loop_image() {
local type=$1
local my_size=$2
local my_file=`mktemp -p ${UBLK_TMP_DIR} ublk_loop_${type}_${my_size}_XXXXX`
truncate -s ${my_size} ${my_file}
my_size=`stat --printf="%s" ${my_file}`
local my_count=`expr ${my_size} / 1048576`
dd if=/dev/zero of=$my_file bs=1M count=${my_count} oflag=direct > /dev/null 2>&1
echo $my_file
}
_remove_loop_image() {
local file=$1
[ -f "$file" ] && rm -f $file
}
__remove_kernel_loop_dev() {
local DEV=$1
losetup -d $DEV
udevadm settle
}
__create_kernel_loop_dev() {
local my_file=`echo $T_TYPE_PARAMS | awk '{print $(NF)}'`
if eval $T_TYPE $T_TYPE_PARAMS > /dev/null 2>&1; then
local my_dev=`losetup -l | grep "${my_file}" | awk '{print $1}'`
udevadm settle
echo $my_dev
else
echo ""
fi
}
__run_loop_dev_perf()
{
local JOBS=$1
local DEV=`__create_kernel_loop_dev`
if [ "$DEV" == "" ]; then
export T_TYPE_PARAMS=${T_TYPE_PARAMS//--direct-io=on/" "}
DEV=`__create_kernel_loop_dev`
fi
echo -e "\t$T_TYPE $T_TYPE_PARAMS, fio: ($DEV libaio, dio, io jobs $JOBS)..."
__run_dev_perf_no_create "loop" $JOBS $DEV
__remove_kernel_loop_dev $DEV
}