Whamcloud - gitweb
remove unecessary debugging
[fs/lustre-release.git] / lustre / tests / lockorder.sh
1 #!/bin/sh
2 set -e
3
4 export PATH=`dirname $0`:`dirname $0`/../utils:$PATH
5 CREATEMANY=${CREATEMANY:-createmany}
6 STATMANY=${STATMANY:-statmany}
7 UNLINKMANY=${UNLINKMANY:-unlinkmany}
8 LCTL=${LCTL:-lctl}
9
10 MOUNT1=${MOUNT1:-/mnt/lustre1}
11 MOUNT2=${MOUNT2:-/mnt/lustre2}
12 DIR=${DIR:-$MOUNT1}
13 DIR2=${DIR2:-$MOUNT2}
14 COUNT=${COUNT:-100}
15
16 cleanup() {
17         [ $CR_PID ] && kill -9 $CR_PID
18 }
19
20 trap cleanup 0
21
22 LOCKDIR=$DIR/lockdir
23 LOCKFILE=$LOCKDIR/lockfile
24 rm -rf $LOCKDIR
25
26 NUM=0
27
28 MINDIR=$DIR
29 MAXDIR=$DIR
30 MINRES=2000000000
31 MAXRES=0
32 mkdir -p $MINDIR
33 while [ $MINRES -gt $MAXRES ]; do
34         FILETMP=$MINDIR/f$$${NUM}
35         DIRTMP=$MAXDIR/d$$${NUM}
36         touch $FILETMP
37         mkdir -p $DIRTMP
38         FILERES=`ls -id $FILETMP | awk '{ print $1 }'`
39         DIRRES=`ls -id $DIRTMP | awk '{ print $1 }'`
40         if [ $DIRRES -gt $MAXRES ]; then
41                 MAXDIR=$DIRTMP
42                 MAXRES=$DIRRES
43         fi
44         if [ $FILERES -lt $MINRES ]; then
45                 [ -f "$MINFILE" ] && rm $MINFILE
46                 MINFILE=$FILETMP
47                 MINRES=$FILERES
48         else
49                 rm $TMPFILE
50         fi
51         NUM=$(($NUM + 1))
52 done
53
54 mv $MAXDIR $LOCKDIR
55 mv $MINFILE $LOCKFILE
56 rm -rf $DIR/d$$*
57
58 $LCTL mark "start dir: $LOCKDIR=$MAXRES file: $LOCKFILE=$MINRES"
59 # link will lock $LOCKFILE and $DIR as it creates ${LOCKFILE}{0,1,...}
60 $CREATEMANY -l$LOCKFILE $LOCKFILE -$COUNT &
61 CR_PID=$!
62
63 sleep 1
64
65 # this will lock $DIR and ${LOCKFILE}0
66 $STATMANY -s $DIR2/lockdir/lockfile 1 -$COUNT &
67 ST_PID=$!
68
69 sleep $(($COUNT / 2))
70
71 $UNLINKMANY $DIR2/lockdir/lockfile 1 $(($COUNT * 1000)) || true
72
73 trap 0
74 kill $CR_PID || true
75 kill $ST_PID || true
76
77 rm -rf $LOCKDIR