|  | #!/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 | 
|  |  | 
|  | echo `cat /sys/module/$2/sections/.text` > /debug/$1/require-start | 
|  | echo `cat /sys/module/$2/sections/.exit.text` > /debug/$1/require-end | 
|  | echo $STACKTRACE_DEPTH > /debug/$1/stacktrace-depth |