aboutsummaryrefslogtreecommitdiffstats
path: root/common/fail_make_request
blob: b5370ba68f0ccd4afe6d4e6994e777bd87a39674 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
##/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
}