| Bryan Schumaker | 800b927 | 2011-11-01 13:35:22 -0400 | [diff] [blame] | 1 | #!/bin/bash | 
|  | 2 | # | 
|  | 3 | # Copyright (c) 2011 Bryan Schumaker <bjschuma@netapp.com> | 
|  | 4 | # | 
|  | 5 | # Script for easier NFSD fault injection | 
|  | 6 |  | 
|  | 7 | # Check that debugfs has been mounted | 
|  | 8 | DEBUGFS=`cat /proc/mounts | grep debugfs` | 
|  | 9 | if [ "$DEBUGFS" == "" ]; then | 
|  | 10 | echo "debugfs does not appear to be mounted!" | 
|  | 11 | echo "Please mount debugfs and try again" | 
|  | 12 | exit 1 | 
|  | 13 | fi | 
|  | 14 |  | 
|  | 15 | # Check that the fault injection directory exists | 
|  | 16 | DEBUGDIR=`echo $DEBUGFS | awk '{print $2}'`/nfsd | 
|  | 17 | if [ ! -d "$DEBUGDIR" ]; then | 
|  | 18 | echo "$DEBUGDIR does not exist" | 
|  | 19 | echo "Check that your .config selects CONFIG_NFSD_FAULT_INJECTION" | 
|  | 20 | exit 1 | 
|  | 21 | fi | 
|  | 22 |  | 
|  | 23 | function help() | 
|  | 24 | { | 
|  | 25 | echo "Usage $0 injection_type [count]" | 
|  | 26 | echo "" | 
|  | 27 | echo "Injection types are:" | 
|  | 28 | ls $DEBUGDIR | 
|  | 29 | exit 1 | 
|  | 30 | } | 
|  | 31 |  | 
|  | 32 | if [ $# == 0 ]; then | 
|  | 33 | help | 
|  | 34 | elif [ ! -f $DEBUGDIR/$1 ]; then | 
|  | 35 | help | 
|  | 36 | elif [ $# != 2 ]; then | 
|  | 37 | COUNT=0 | 
|  | 38 | else | 
|  | 39 | COUNT=$2 | 
|  | 40 | fi | 
|  | 41 |  | 
|  | 42 | BEFORE=`mktemp` | 
|  | 43 | AFTER=`mktemp` | 
|  | 44 | dmesg > $BEFORE | 
|  | 45 | echo $COUNT > $DEBUGDIR/$1 | 
|  | 46 | dmesg > $AFTER | 
|  | 47 | # Capture lines that only exist in the $AFTER file | 
|  | 48 | diff $BEFORE $AFTER | grep ">" | 
|  | 49 | rm -f $BEFORE $AFTER |