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