blob: ab4eda5ef4a8dede47adbaacbc70003587ff1ab1 [file] [log] [blame] [edit]
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
export NBDSRV=127.0.0.1
export NBD_SIZE=2G
export _NBDS_PID=${UBLK_TMP_DIR}/nbds_pid
_kill_nbdkit() {
if [ -f ${_NBDS_PID} ]; then
local nbds_pid=`cat ${_NBDS_PID}`
kill -9 ${nbds_pid} > /dev/null 2>&1
local count=0
while [ $count -lt 32 ]; do
kill -0 ${nbds_pid} > /dev/null 2>&1
[ $? -ne 0 ] && break
let count++
sleep 1
done
fi
}
_create_nbd_image() {
local type=$1
local my_size=$2
local my_file=`mktemp -p ${UBLK_TMP_DIR} ublk_nbd_${type}_${my_size}_XXXXX`
which nbdkit > /dev/null 2>&1
[ $? -ne 0 ] && echo "please install nbdkit package" && exit -1
if [ $type == "none" ]; then
nbdkit -P ${_NBDS_PID} memory $my_size
else
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
nbdkit -P ${_NBDS_PID} file $my_file
fi
sleep 1
echo $my_file
}
_remove_nbd_image() {
local file=$1
_kill_nbdkit
[ -f ${_NBDS_PID} ] && rm -f ${_NBDS_PID}
[ -f "$file" ] && rm -f $file
}