1#!/bin/bash 2# SPDX-License-Identifier: GPL-2.0 3 4. common/fio_common 5. common/qcow2_common 6 7echo "check qcow2 image integrity after ubq_deamon is killed when running fio" 8 9BS=4k 10RW=rw 11JOBS=4 12QUEUES=1 13RT=$TRUNTIME 14LOOPS=4 15URING_COMP=1 16NEED_GET_DATA=1 17 18ublk_run_abort_test() 19{ 20 for CNT in `seq $LOOPS`; do 21 export T_TYPE_PARAMS="-t qcow2 -q $QUEUES -u $URING_COMP -g $NEED_GET_DATA -f $file" 22 DEV=`__create_ublk_dev` 23 echo -e "\trun fio with killing $DEV(ublk add $T_TYPE_PARAMS) with check image integrity $CNT" 24 __run_fio_libaio $DEV $BS $RW $JOBS $RT > /dev/null 2 >& 1 & 25 sleep 2 26 queue_tid=`__ublk_get_queue_tid $DEV 0` 27 kill -9 $queue_tid 28 sleep 2 29 secs=0 30 while [ $secs -lt 10 ]; do 31 state=`__ublk_get_dev_state $DEV` 32 [ "$state" == "DEAD" ] && break 33 sleep 1 34 let secs++ 35 done 36 [ "$state" != "DEAD" ] && echo "device isn't dead after killing queue daemon" && exit -1 37 RES=`__remove_ublk_dev_return $DEV` 38 if [ $RES -ne 0 ]; then 39 echo -e "\tdelete $DEV failed" 40 exit -1 41 fi 42 qemu-img check -r leaks $file > ${UBLK_TMP} 2>&1 43 RES=$? 44 wait 45 [ $RES -ne 0 ] && cat ${UBLK_TMP} && break 46 done 47} 48 49file=`_create_qcow2_image "null" 2G` 50 51ublk_run_abort_test 52 53_remove_qcow2_image $file 54