• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/bin/bash
2# SPDX-License-Identifier: MIT or GPL-2.0-only
3
4. common/fio_common
5. common/loop_common
6. common/nbd_common
7
8echo -e "\trun fio with dev recovery, type 1:"
9echo -e "\t(1)kill all ubq_deamon, (2)recover with new ubq_daemon, (3)delete dev"
10
11BS=4k
12RW=rw
13JOBS=4
14QUEUES=2
15RT=$TRUNTIME*2
16LOOPS=1
17URING_COMP=1
18NEED_GET_DATA=1
19RECOVERY=1
20RECOVERY_REISSUE=0
21
22ublk_run_recover_test()
23{
24	local type=$1
25	local file=`_create_image $type "null" 256M`
26
27	if [ "$type" == "null" ]; then
28		local backing=""
29    elif [ "$type" == "nbd" ]; then
30		local backing="--host 127.0.0.1"
31	else
32		local backing="-f $file"
33	fi
34
35	QUEUES=2
36
37	for CNT in `seq $LOOPS`; do
38		export T_TYPE_PARAMS="-t $type -q $QUEUES -u $URING_COMP -g $NEED_GET_DATA -r $RECOVERY -i $RECOVERY_REISSUE $backing"
39		DEV=`__create_ublk_dev`
40		echo -e "\trun fio with killing $DEV(ublk add $T_TYPE_PARAMS) queue daemon $CNT"
41		__run_fio_libaio $DEV $BS $RW $JOBS $RT > /dev/null 2 >& 1 &
42		sleep 2
43		pid=`__ublk_get_pid $DEV`
44		kill -9 $pid
45		sleep 2
46		secs=0
47		while [ $secs -lt 10 ]; do
48			state=`__ublk_get_dev_state $DEV 0`
49			[ "$state" == "QUIESCED" ] && break
50			sleep 1
51			let secs++
52		done
53		secs=0
54		while [ $secs -lt 10 ]; do
55			RES=`__recover_ublk_dev $DEV`
56			[ $RES -eq 0 ] && break
57			sleep 1
58			let secs++
59		done
60		if [ $RES -ne 0 ]; then
61			echo -e "\trecover $DEV failed"
62		fi
63		sleep 2
64		RES=`__remove_ublk_dev_return $DEV`
65		if [ $RES -ne 0 ]; then
66			echo -e "\tdelete $DEV failed"
67			break
68		fi
69		wait
70		sleep 3
71	done
72	_remove_image ${type} $file
73}
74
75for TGT in $ALL_TGTS; do
76	for RECOVERY_REISSUE in `seq 0 1`; do
77		ublk_run_recover_test $TGT
78	done
79done
80