From: adilger Date: Thu, 11 Dec 2003 22:33:40 +0000 (+0000) Subject: Add lock-order regression test. X-Git-Tag: 1.0.2~66 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=7d1244c9622ea02b25d3b236bf874638998e3ff8;p=fs%2Flustre-release.git Add lock-order regression test. b=1844 --- diff --git a/lustre/tests/lockorder.sh b/lustre/tests/lockorder.sh new file mode 100644 index 0000000..1678a39 --- /dev/null +++ b/lustre/tests/lockorder.sh @@ -0,0 +1,77 @@ +#!/bin/sh +set -e + +export PATH=`dirname $0`:$PATH +CREATEMANY=${CREATEMANY:-createmany} +STATMANY=${STATMANY:-statmany} +UNLINKMANY=${UNLINKMANY:-unlinkmany} +LCTL=${LCTL:-lctl} + +MOUNT1=${MOUNT1:-/mnt/lustre1} +MOUNT2=${MOUNT2:-/mnt/lustre2} +DIR=${DIR:-$MOUNT1} +DIR2=${DIR2:-$MOUNT2} +COUNT=${COUNT:-100} + +cleanup() { + [ $CR_PID ] && kill -9 $CR_PID +} + +trap cleanup 0 + +LOCKDIR=$DIR/lockdir +LOCKFILE=$LOCKDIR/lockfile +rm -rf $LOCKDIR + +NUM=0 + +MINDIR=$DIR +MAXDIR=$DIR +MINRES=2000000000 +MAXRES=0 +mkdir -p $MINDIR +while [ $MINRES -gt $MAXRES ]; do + FILETMP=$MINDIR/f$$${NUM} + DIRTMP=$MAXDIR/d$$${NUM} + touch $FILETMP + mkdir -p $DIRTMP + FILERES=`ls -id $FILETMP | awk '{ print $1 }'` + DIRRES=`ls -id $DIRTMP | awk '{ print $1 }'` + if [ $DIRRES -gt $MAXRES ]; then + MAXDIR=$DIRTMP + MAXRES=$DIRRES + fi + if [ $FILERES -lt $MINRES ]; then + [ -f "$MINFILE" ] && rm $MINFILE + MINFILE=$FILETMP + MINRES=$FILERES + else + rm $TMPFILE + fi + NUM=$(($NUM + 1)) +done + +mv $MAXDIR $LOCKDIR +mv $MINFILE $LOCKFILE +rm -rf $DIR/d$$* + +$LCTL mark "start dir: $LOCKDIR=$MAXRES file: $LOCKFILE=$MINRES" +# link will lock $LOCKFILE and $DIR as it creates ${LOCKFILE}{0,1,...} +$CREATEMANY -l$LOCKFILE $LOCKFILE -$COUNT & +CR_PID=$! + +sleep 1 + +# this will lock $DIR and ${LOCKFILE}0 +$STATMANY -s $DIR2/lockdir/lockfile 1 -$COUNT & +ST_PID=$! + +sleep $(($COUNT / 2)) + +$UNLINKMANY $DIR2/lockdir/lockfile 1 $(($COUNT * 1000)) || true + +trap 0 +kill $CR_PID || true +kill $ST_PID || true + +#rm -r $PDIR