##/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_FAULT_INJECTION_DEBUG_FS 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 }