xref: /aosp_15_r20/external/ublksrv/tests/qcow2/040 (revision 94c4a1e103eb1715230460aab379dff275992c20)
1#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4. common/fio_common
5. common/qcow2_common
6
7echo "check qcow2 image integrity after ubq_deamon is killed when running fio"
8
9BS=4k
10RW=rw
11JOBS=4
12QUEUES=1
13RT=$TRUNTIME
14LOOPS=4
15URING_COMP=1
16NEED_GET_DATA=1
17
18ublk_run_abort_test()
19{
20	for CNT in `seq $LOOPS`; do
21		export T_TYPE_PARAMS="-t qcow2 -q $QUEUES -u $URING_COMP -g $NEED_GET_DATA -f $file"
22		DEV=`__create_ublk_dev`
23		echo -e "\trun fio with killing $DEV(ublk add $T_TYPE_PARAMS) with check image integrity $CNT"
24		__run_fio_libaio $DEV $BS $RW $JOBS $RT > /dev/null 2 >& 1 &
25		sleep 2
26		queue_tid=`__ublk_get_queue_tid $DEV 0`
27		kill -9 $queue_tid
28		sleep 2
29		secs=0
30		while [ $secs -lt 10 ]; do
31			state=`__ublk_get_dev_state $DEV`
32			[ "$state" == "DEAD" ] && break
33			sleep 1
34			let secs++
35		done
36		[ "$state" != "DEAD" ] && echo "device isn't dead after killing queue daemon" && exit -1
37		RES=`__remove_ublk_dev_return $DEV`
38		if [ $RES -ne 0 ]; then
39				echo -e "\tdelete $DEV failed"
40				exit -1
41		fi
42		qemu-img check -r leaks $file > ${UBLK_TMP} 2>&1
43		RES=$?
44		wait
45		[ $RES -ne 0 ] && cat ${UBLK_TMP} && break
46	done
47}
48
49file=`_create_qcow2_image "null" 2G`
50
51ublk_run_abort_test
52
53_remove_qcow2_image $file
54