blob: 564020215ffdc854da52dd2794020ca63ed8476c [file] [log] [blame]
##/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# common functions for setting up and tearing down block device error injection
_require_fail_make_request()
{
[ -f "$DEBUGFS_MNT/fail_make_request/probability" ] \
|| _notrun "$DEBUGFS_MNT/fail_make_request \
not found. Seems that CONFIG_FAIL_MAKE_REQUEST kernel config option not enabled"
}
_allow_fail_make_request()
{
local prob="${1:-100}"
local times="${2:-9999999}"
local verbose="${3:-0}"
echo "Allow global fail_make_request feature"
echo "$prob" > $DEBUGFS_MNT/fail_make_request/probability
echo "$times" > $DEBUGFS_MNT/fail_make_request/times
echo "$verbose" > $DEBUGFS_MNT/fail_make_request/verbose
}
_disallow_fail_make_request()
{
echo "Disallow global fail_make_request feature"
echo 0 > $DEBUGFS_MNT/fail_make_request/probability
echo 0 > $DEBUGFS_MNT/fail_make_request/times
echo 0 > $DEBUGFS_MNT/fail_make_request/verbose
}
_bdev_fail_make_request()
{
local bdev="$1"
local status="$2"
local sysfs_bdev=$(_sysfs_dev $bdev)
echo " echo $status > $sysfs_bdev/make-it-fail" >> $seqres.full
echo "$status" > $sysfs_bdev/make-it-fail
}
_start_fail_scratch_dev()
{
echo "Force SCRATCH_DEV device failure"
_prepare_for_eio_shutdown $SCRATCH_DEV
_bdev_fail_make_request $SCRATCH_DEV 1
[ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
_bdev_fail_make_request $SCRATCH_LOGDEV 1
[ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_RTDEV" ] && \
_bdev_fail_make_request $SCRATCH_RTDEV 1
}
_stop_fail_scratch_dev()
{
echo "Make SCRATCH_DEV device operable again"
[ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_RTDEV" ] && \
_bdev_fail_make_request $SCRATCH_RTDEV 0
[ "$USE_EXTERNAL" = yes -a ! -z "$SCRATCH_LOGDEV" ] && \
_bdev_fail_make_request $SCRATCH_LOGDEV 0
_bdev_fail_make_request $SCRATCH_DEV 0
}