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