xref: /aosp_15_r20/external/ublksrv/tests/common/nbd_common (revision 94c4a1e103eb1715230460aab379dff275992c20)
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