#!/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 }