aboutsummaryrefslogtreecommitdiffstats
path: root/stress_modules.sh
blob: 37c1b57f917946cd80cb77dac6d10b186948a0e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#! /bin/sh

MODULE_DIR=/lib/modules/`uname -r`/kernel

case "$1" in
    mount-unmount)
	trap "umount $3; rm -f $2; rmdir $3" 0
	mkdir $3
	dd bs=1204k count=20 if=/dev/zero of=$2
	mke2fs -F $2
	tune2fs -c 0 $2
	modprobe loop
	while true; do mount -o loop $2 $3; umount $3; sleep 1; done
	;;
    bang-one)
	trap "rmmod $2" 0
	while true; do modprobe $2; rmmod $2; done
	;;
    bang-all)
	while true; do
	    # Randomize order
	    find $MODULE_DIR -name '*.ko' | ( while read mod; do echo $RANDOM $mod; done ) | sort -n |
		while read junk modname; do
  		    if [ $RANDOM -gt $RANDOM ]; then
 			rmmod `basename $modname .ko`
 		    else
 			modprobe `basename $modname .ko`
  		    fi
		done
	done
	;;
    "")
	$0 mount-unmount testfs.$$ /tmp/$$ &
	$0 bang-one ext2 &
	$0 bang-all &
	exit 0
	;;
    *)
	echo Unknown arg "$1"
	exit 1
	;;
esac