NFSD: Added fault injection script
authorBryan Schumaker <bjschuma@netapp.com>
Tue, 1 Nov 2011 17:35:22 +0000 (13:35 -0400)
committerJ. Bruce Fields <bfields@redhat.com>
Tue, 8 Nov 2011 02:10:47 +0000 (21:10 -0500)
This script provides a convenient way to use the NFSD fault injection
framework.  Fault injection writes to dmesg using the KERN_INFO flag, so
this script will compare the before and after output of `dmesg` to show
the user what happened

Signed-off-by: Bryan Schumaker <bjschuma@netapp.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
tools/nfsd/inject_fault.sh [new file with mode: 0755]

diff --git a/tools/nfsd/inject_fault.sh b/tools/nfsd/inject_fault.sh
new file mode 100755 (executable)
index 0000000..06a399a
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+# Copyright (c) 2011 Bryan Schumaker <bjschuma@netapp.com>
+#
+# Script for easier NFSD fault injection
+
+# Check that debugfs has been mounted
+DEBUGFS=`cat /proc/mounts | grep debugfs`
+if [ "$DEBUGFS" == "" ]; then
+       echo "debugfs does not appear to be mounted!"
+       echo "Please mount debugfs and try again"
+       exit 1
+fi
+
+# Check that the fault injection directory exists
+DEBUGDIR=`echo $DEBUGFS | awk '{print $2}'`/nfsd
+if [ ! -d "$DEBUGDIR" ]; then
+       echo "$DEBUGDIR does not exist"
+       echo "Check that your .config selects CONFIG_NFSD_FAULT_INJECTION"
+       exit 1
+fi
+
+function help()
+{
+       echo "Usage $0 injection_type [count]"
+       echo ""
+       echo "Injection types are:"
+       ls $DEBUGDIR
+       exit 1
+}
+
+if [ $# == 0 ]; then
+       help
+elif [ ! -f $DEBUGDIR/$1 ]; then
+       help
+elif [ $# != 2 ]; then
+       COUNT=0
+else
+       COUNT=$2
+fi
+
+BEFORE=`mktemp`
+AFTER=`mktemp`
+dmesg > $BEFORE
+echo $COUNT > $DEBUGDIR/$1
+dmesg > $AFTER
+# Capture lines that only exist in the $AFTER file
+diff $BEFORE $AFTER | grep ">"
+rm -f $BEFORE $AFTER