#!/bin/sh
################################################################################
## ##
## Copyright (c) International Business Machines Corp., 2009 ##
## ##
## This program is free software; you can redistribute it and/or modify ##
## it under the terms of the GNU General Public License as published by ##
## the Free Software Foundation; either version 2 of the License, or ##
## (at your option) any later version. ##
## ##
## This program is distributed in the hope that it will be useful, but ##
## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ##
## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ##
## for more details. ##
## ##
## You should have received a copy of the GNU General Public License ##
## along with this program; if not, write to the Free Software ##
## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ##
## ##
################################################################################
# ##
# File : insert_kernel_faults.sh ##
# ##
# Usage: insert_kernel_faults.sh <fault_percentage> ##
# ##
# Description: This is a simple script that inserts faults at various ##
# subsystems of the kernel. Please refer to the ltp/README ##
# for the various kernel CONFIG options needed to exploit ##
# all those features ##
# ##
# Author: Subrata Modak <subrata@linux.vnet.ibm.com> ##
# ##
# History: Aug 11 2009 - Created - Subrata Modak. ##
# Aug 17 2009 - Changed the debugfs mount point - Subrata Modak.##
################################################################################
if [ -z "$1" ]
then
#Check if Useage has been proper
echo "Usage: $0 <fault_percentage>"
exit 1
fi
#These are the types of Subsystems where fault will be injected
#Make sure debugfs has been mounted
for FAILTYPE in fail_io_timeout fail_make_request fail_page_alloc failslab
do
echo $1 > /sys/kernel/debug/$FAILTYPE/probability
echo 100 > /sys/kernel/debug/$FAILTYPE/interval
echo -1 > /sys/kernel/debug/$FAILTYPE/times
echo 0 > /sys/kernel/debug/$FAILTYPE/space
done