#!/bin/sh fail() { echo "ERROR: $1" 1>&2 [ $2 ] && RC=$2 || RC=1 exit $RC } test_fail() { oldtimeout=`cat /proc/sys/lustre/timeout` echo $TIMEOUT > /proc/sys/lustre/timeout echo $1 > /proc/sys/lustre/fail_loc shift $* & sleep $TIMEOUT sleep 2 # fudge kill -9 $! echo $oldtimeout > /proc/sys/lustre/timeout echo 0 > /proc/sys/lustre/fail_loc 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" } set -vx LCTL=../utils/lctl OSC=OSC_localhost_UUID MDC=MDC_client1_UUID TIMEOUT=5 # complete in finite time [ "`mount | grep /mnt/lustre`" ] || echo | sh llmount.sh || exit -1 # GETATTR_NET - ls will hang on the getattr # test_fail 0x102 ls -l /mnt/lustre # READPAGE_NET - ls will hang reading in new pages (lost+found is not in cache) test_fail 0x104 ls /mnt/lustre sleep 1 # REINT_NET - touch will hang on setattr test_fail 0x107 touch /mnt/lustre # REINT_NET - touch will hang on create test_fail 0x107 touch /mnt/lustre/tt # REINT_NET - mv will hang on rename touch /mnt/lustre/foo test_fail 0x107 mv /mnt/lustre/foo /mnt/lustre/bar # REINT_NET - rm will hang on unlink touch /mnt/lustre/salmon test_fail 0x107 rm /mnt/lustre/salmon # OPEN_NET - touch will hang on open touch /mnt/lustre/foo test_fail 0x113 cat /mnt/lustre/foo # CLOSE_NET - ls will hang on close test_fail 0x115 ./testreq --close junk_file_handle echo 0 > /proc/sys/lustre/fail_loc echo "Done."