xref: /aosp_15_r20/external/ublksrv/tests/generic/006 (revision 94c4a1e103eb1715230460aab379dff275992c20)
1#!/bin/bash
2# SPDX-License-Identifier: MIT or GPL-2.0-only
3
4. common/fio_common
5
6echo -e "\trun fio with dev recovery, type 2:"
7echo -e "\t(1)kill all ubq_deamon, (2)recover with new ubq_daemon, (3)kill all ubq_deamon, (4)delete dev"
8
9BS=4k
10RW=rw
11JOBS=4
12QUEUES=2
13RT=$TRUNTIME*2
14LOOPS=4
15URING_COMP=1
16NEED_GET_DATA=1
17RECOVERY=1
18RECOVERY_REISSUE=0
19
20ublk_run_recover_kill_test()
21{
22	for CNT in `seq $LOOPS`; do
23		export T_TYPE_PARAMS="-t null -q $QUEUES -u $URING_COMP -g $NEED_GET_DATA -r $RECOVERY -i $RECOVERY_REISSUE"
24		DEV=`__create_ublk_dev`
25		echo -e "\trun fio with killing $DEV(ublk add $T_TYPE_PARAMS) queue daemon $CNT"
26		__run_fio_libaio $DEV $BS $RW $JOBS $RT > /dev/null 2 >& 1 &
27		sleep 2
28		pid1=`__ublk_get_pid $DEV`
29		kill -9 $pid1
30		sleep 2
31		secs=0
32		while [ $secs -lt 10 ]; do
33			state=`__ublk_get_dev_state $DEV`
34			[ "$state" == "QUIESCED" ] && break
35			sleep 1
36			let secs++
37		done
38		secs=0
39		while [ $secs -lt 10 ]; do
40			RES=`__recover_ublk_dev $DEV`
41			[ $RES -eq 0 ] && break
42			sleep 1
43			let secs++
44		done
45		if [ $RES -ne 0 ]; then
46			echo -e "\trecover $DEV failed"
47		fi
48		sleep 2
49        pid2=`__ublk_get_pid $DEV`
50		kill -9 $pid2
51		sleep 2
52		RES=`__remove_ublk_dev_return $DEV`
53		if [ $RES -ne 0 ]; then
54				echo -e "\tdelete $DEV failed"
55				break
56		fi
57		wait
58		sleep 3
59	done
60}
61
62for RECOVERY_REISSUE in `seq 0 1`; do
63	ublk_run_recover_kill_test
64done
65