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