#!/bin/sh
-set -vx
+fail() {
+ echo "ERROR: $1" 1>&2
+ [ $2 ] && RC=$2 || RC=1
+ exit $RC
+}
-run() {
+test_fail() {
+ oldtimeout=`cat /proc/sys/lustre/timeout`
+ echo $TIMEOUT > /proc/sys/lustre/timeout
echo $1 > /proc/sys/lustre/fail_loc
shift
$* &
- sleep 1
+ sleep $TIMEOUT
+ sleep 2 # fudge
kill -9 $!
+ echo $oldtimeout > /proc/sys/lustre/timeout
echo 0 > /proc/sys/lustre/fail_loc
- umount /mnt/obd
- mount -t lustre_light -o device=3 none /mnt/obd
+ umount -f /mnt/lustre || fail "cannot unmount /mnt/lustre"
+ mount -t lustre_lite -o "osc=$OSC,mdc=$MDC" none /mnt/lustre || \
+ fail "cannot remount $OSC/$MDC on /mnt/lustre"
}
-mknod /dev/request c 10 244
+set -vx
+
+LCTL=../utils/lctl
+OSC=OSC_localhost_UUID
+MDC=MDC_client1_UUID
+TIMEOUT=5 # complete in finite time
-sh llmount.sh
+[ "`mount | grep /mnt/lustre`" ] || echo | sh llmount.sh || exit -1
# GETATTR_NET - ls will hang on the getattr
-run 0x102 ls -l /mnt/obd
+# test_fail 0x102 ls -l /mnt/lustre
# READPAGE_NET - ls will hang reading in new pages (lost+found is not in cache)
-run 0x104 ls /mnt/obd
+test_fail 0x104 ls /mnt/lustre
sleep 1
# REINT_NET - touch will hang on setattr
-run 0x107 touch /mnt/obd
+test_fail 0x107 touch /mnt/lustre
# REINT_NET - touch will hang on create
-run 0x107 touch /mnt/obd/tt
+test_fail 0x107 touch /mnt/lustre/tt
# REINT_NET - mv will hang on rename
-touch /mnt/obd/foo
-run 0x107 mv /mnt/obd/foo /mnt/obd/bar
+touch /mnt/lustre/foo
+test_fail 0x107 mv /mnt/lustre/foo /mnt/lustre/bar
# REINT_NET - rm will hang on unlink
-touch /mnt/obd/salmon
-run 0x107 rm /mnt/obd/salmon
+touch /mnt/lustre/salmon
+test_fail 0x107 rm /mnt/lustre/salmon
# OPEN_NET - touch will hang on open
-touch /mnt/obd/foo
-run 0x113 cat /mnt/obd/foo
+touch /mnt/lustre/foo
+test_fail 0x113 cat /mnt/lustre/foo
# CLOSE_NET - ls will hang on close
-run 0x115 ./testreq --close junk_file_handle
+test_fail 0x115 ./testreq --close junk_file_handle
echo 0 > /proc/sys/lustre/fail_loc
-echo "Done."
\ No newline at end of file
+echo "Done."