#!/bin/bash # SPDX-License-Identifier: GPL-2.0 . common/fio_common . common/qcow2_common echo "check qcow2 image integrity after ubq_deamon is killed when running fio" BS=4k RW=rw JOBS=4 QUEUES=1 RT=$TRUNTIME LOOPS=4 URING_COMP=1 NEED_GET_DATA=1 ublk_run_abort_test() { for CNT in `seq $LOOPS`; do export T_TYPE_PARAMS="-t qcow2 -q $QUEUES -u $URING_COMP -g $NEED_GET_DATA -f $file" DEV=`__create_ublk_dev` echo -e "\trun fio with killing $DEV(ublk add $T_TYPE_PARAMS) with check image integrity $CNT" __run_fio_libaio $DEV $BS $RW $JOBS $RT > /dev/null 2 >& 1 & sleep 2 queue_tid=`__ublk_get_queue_tid $DEV 0` kill -9 $queue_tid sleep 2 secs=0 while [ $secs -lt 10 ]; do state=`__ublk_get_dev_state $DEV` [ "$state" == "DEAD" ] && break sleep 1 let secs++ done [ "$state" != "DEAD" ] && echo "device isn't dead after killing queue daemon" && exit -1 RES=`__remove_ublk_dev_return $DEV` if [ $RES -ne 0 ]; then echo -e "\tdelete $DEV failed" exit -1 fi qemu-img check -r leaks $file > ${UBLK_TMP} 2>&1 RES=$? wait [ $RES -ne 0 ] && cat ${UBLK_TMP} && break done } file=`_create_qcow2_image "null" 2G` ublk_run_abort_test _remove_qcow2_image $file