#!/bin/bash
# SPDX-License-Identifier: MIT or GPL-2.0-only

. common/fio_common
. common/loop_common

echo -e "\trun fio with kill ubq_deamon and delete(NOWAIT) ublk-loop test"

BS=4k
RW=rw
JOBS=4
QUEUES=4
RT=$TRUNTIME
LOOPS=4
URING_COMP=1
NEED_GET_DATA=1
RECOVERY=0
RECOVERY_REISSUE=0


ublk_run_delete_test()
{
	local cnt=$1
	export T_TYPE_PARAMS="-t loop -q $QUEUES -u $URING_COMP -g $NEED_GET_DATA -r $RECOVERY -i $RECOVERY_REISSUE -f $file"
	local dev=`__create_ublk_dev`
	echo -e "\trun fio on $dev(ublk add $T_TYPE_PARAMS) with deleting dev $cnt"

	__run_fio_libaio $dev $BS $RW $JOBS $RT > /dev/null 2 >& 1 &
	sleep 2
	queue_tid=`__ublk_get_queue_tid $dev 0`
	kill -9 $queue_tid
	RES=`__remove_ublk_dev_return $dev`
	if [ $RES -ne 0 ]; then
		echo -e "\tdelete $dev failed"
		ps -eLf | grep ublk
		(cd /sys/kernel/debug/block/`basename $dev` && find . -type f -exec grep -aH . {} \;)
		break
	fi
	wait
}

file=`_create_loop_image "data" 1G`

RECOVERY=1
for RECOVERY_REISSUE in `seq 0 1`; do
	for CNT in `seq $LOOPS`; do
		ublk_run_delete_test $CNT
	done
done

_remove_loop_image $file
