1320f9b1cSUday Shankar#!/bin/bash 2320f9b1cSUday Shankar# SPDX-License-Identifier: GPL-2.0 3320f9b1cSUday Shankar 4320f9b1cSUday Shankar. "$(cd "$(dirname "$0")" && pwd)"/test_common.sh 5320f9b1cSUday Shankar 6320f9b1cSUday ShankarERR_CODE=0 7320f9b1cSUday Shankar 8320f9b1cSUday Shankar_prep_test "fault_inject" "teardown after incomplete recovery" 9320f9b1cSUday Shankar 10320f9b1cSUday Shankar# First start and stop a ublk server with device configured for recovery 11320f9b1cSUday Shankardev_id=$(_add_ublk_dev -t fault_inject -r 1) 12320f9b1cSUday Shankar_check_add_dev $TID $? 13320f9b1cSUday Shankarstate=$(__ublk_kill_daemon "${dev_id}" "QUIESCED") 14320f9b1cSUday Shankarif [ "$state" != "QUIESCED" ]; then 15320f9b1cSUday Shankar echo "device isn't quiesced($state) after $action" 16320f9b1cSUday Shankar ERR_CODE=255 17320f9b1cSUday Shankarfi 18320f9b1cSUday Shankar 19320f9b1cSUday Shankar# Then recover the device, but use --die_during_fetch to have the ublk 20320f9b1cSUday Shankar# server die while a queue has some (but not all) I/Os fetched 21320f9b1cSUday Shankar${UBLK_PROG} recover -n "${dev_id}" --foreground -t fault_inject --die_during_fetch 1 22320f9b1cSUday ShankarRECOVER_RES=$? 23320f9b1cSUday Shankar# 137 is the result when dying of SIGKILL 24320f9b1cSUday Shankarif (( RECOVER_RES != 137 )); then 25320f9b1cSUday Shankar echo "recover command exited with unexpected code ${RECOVER_RES}!" 26320f9b1cSUday Shankar ERR_CODE=255 27320f9b1cSUday Shankarfi 28320f9b1cSUday Shankar 29320f9b1cSUday Shankar# Clean up the device. This can only succeed once teardown of the above 30320f9b1cSUday Shankar# exited ublk server completes. So if teardown never completes, we will 31320f9b1cSUday Shankar# time out here 32320f9b1cSUday Shankar_ublk_del_dev "${dev_id}" 33320f9b1cSUday Shankar 34*eac857a1SCaleb Sander Mateos_cleanup_test 35320f9b1cSUday Shankar_show_result $TID $ERR_CODE 36