1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4export NBDSRV=127.0.0.1 5export NBD_SIZE=2G 6export _NBDS_PID=${UBLK_TMP_DIR}/nbds_pid 7 8_kill_nbdkit() { 9 if [ -f ${_NBDS_PID} ]; then 10 local nbds_pid=`cat ${_NBDS_PID}` 11 kill -9 ${nbds_pid} > /dev/null 2>&1 12 local count=0 13 while [ $count -lt 32 ]; do 14 kill -0 ${nbds_pid} > /dev/null 2>&1 15 [ $? -ne 0 ] && break 16 let count++ 17 sleep 1 18 done 19 fi 20} 21 22_create_nbd_image() { 23 local type=$1 24 local my_size=$2 25 local my_file=`mktemp -p ${UBLK_TMP_DIR} ublk_nbd_${type}_${my_size}_XXXXX` 26 27 which nbdkit > /dev/null 2>&1 28 [ $? -ne 0 ] && echo "please install nbdkit package" && exit -1 29 30 if [ $type == "none" ]; then 31 nbdkit -P ${_NBDS_PID} memory $my_size 32 else 33 truncate -s ${my_size} ${my_file} 34 35 my_size=`stat --printf="%s" ${my_file}` 36 local my_count=`expr ${my_size} / 1048576` 37 dd if=/dev/zero of=$my_file bs=1M count=${my_count} oflag=direct > /dev/null 2>&1 38 39 nbdkit -P ${_NBDS_PID} file $my_file 40 fi 41 sleep 1 42 echo $my_file 43} 44 45_remove_nbd_image() { 46 local file=$1 47 48 _kill_nbdkit 49 50 [ -f ${_NBDS_PID} ] && rm -f ${_NBDS_PID} 51 52 [ -f "$file" ] && rm -f $file 53} 54