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