50 lines
		
	
	
	
		
			1,001 B
			
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
	
		
			1,001 B
			
		
	
	
	
		
			Bash
		
	
	
	
	
	
|   | #!/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 |