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