2006-12-08 10:39:42 +00:00
|
|
|
#!/bin/bash
|
|
|
|
#
|
|
|
|
# Usage: failmodule <failname> <modulename> [stacktrace-depth]
|
|
|
|
#
|
|
|
|
# <failname>: "failslab", "fail_alloc_page", or "fail_make_request"
|
|
|
|
#
|
|
|
|
# <modulename>: module name that you want to inject faults.
|
|
|
|
#
|
|
|
|
# [stacktrace-depth]: the maximum number of stacktrace walking allowed
|
|
|
|
#
|
|
|
|
|
|
|
|
STACKTRACE_DEPTH=5
|
|
|
|
if [ $# -gt 2 ]; then
|
|
|
|
STACKTRACE_DEPTH=$3
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ ! -d /debug/$1 ]; then
|
|
|
|
echo "Fault-injection $1 does not exist" >&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
if [ ! -d /sys/module/$2 ]; then
|
|
|
|
echo "Module $2 does not exist" >&2
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Disable any fault injection
|
|
|
|
echo 0 > /debug/$1/stacktrace-depth
|
|
|
|
|
2006-12-08 10:39:50 +00:00
|
|
|
echo `cat /sys/module/$2/sections/.text` > /debug/$1/require-start
|
|
|
|
echo `cat /sys/module/$2/sections/.exit.text` > /debug/$1/require-end
|
2006-12-08 10:39:42 +00:00
|
|
|
echo $STACKTRACE_DEPTH > /debug/$1/stacktrace-depth
|