Whamcloud - gitweb
- Fix OBD_IOC_OPEN to return the obdo, so user-space has a file handle,
[fs/lustre-release.git] / lustre / tests / runregression-brw.sh
1 #!/bin/sh
2 export PATH=/sbin:/usr/sbin:$PATH
3
4 SRCDIR="`dirname $0`/"
5 . $SRCDIR/common.sh
6
7 COUNT=${COUNT:-10000000}
8 COUNT_10=`expr $COUNT / 10`
9 COUNT_100=`expr $COUNT / 100`
10
11 ENDRUN=endrun-`hostname`
12
13 OSCNAME="`$OBDCTL device_list 2> /dev/null | awk '/ osc | lov / { print $4 }' | tail -1`"
14
15 if [ -z "$OSCNAME" ]; then
16         echo "$0: needs an OSC set up first" 1>&2
17         exit 1
18 fi
19
20 cleanup () {
21         $OBDCTL --device \$$OSCNAME destroy $OID
22 }
23         
24 runthreads() {
25         THR=$1
26         DO=$2
27         CNT=$3
28         V=$4
29         PGS=$5
30
31         case $DO in
32         test_getattr)
33                 RW=
34                 ;;
35         test_brw_write)
36                 DO=test_brw
37                 RW=w
38                 ;;
39
40         test_brw_read)
41                 DO=test_brw
42                 RW=r
43                 ;;
44         esac
45
46         $OBDCTL --threads $THR v \$$OSCNAME $DO $CNT $RW $V $PGS $OID || exit 1
47
48         if [ -e $ENDRUN ]; then
49                 rm $ENDRUN
50                 echo "exiting because $ENDRUN file was found"
51                 cleanup
52         fi
53 }
54
55 [ -z "$OID" ] && OID=`$OBDCTL --device \\$$OSCNAME create 1 | awk '/is object id/ { print $6 }'`
56 [ -z "$OID" ] && echo "error creating object" 1>&2 && exit 1
57
58 # TODO: obdctl needs to check on the progress of each forked thread
59 #       (IPC SHM, sockets?) to see if it hangs.
60 while date; do
61         PG=1
62         PGVW=16
63         PGVR=16
64
65         # We use '--threads 1 X' instead of '--device X' so that
66         # obdctl can monitor the forked thread for progress (TODO).
67         debug_server_off
68         debug_client_off
69         runthreads 1 test_brw_write 1000 -30 $PG
70         runthreads 1 test_brw_read 1000 -30 $PG
71
72         [ "$PGVW" ] && runthreads 1 test_brw_write 100 -30 $PGVW
73         [ "$PGVW" ] && runthreads 1 test_brw_read 1600 -30 $PG
74         [ "$PGVR" ] && runthreads 1 test_brw_read 100 -30 $PGVR
75
76         runthreads 1 test_brw_write $COUNT -30 $PG
77         runthreads 1 test_brw_read $COUNT -30 $PG
78
79         [ "$PGVW" ] && runthreads 1 test_brw_write $COUNT_10 -30 $PGVW
80         [ "$PGVR" ] && runthreads 1 test_brw_read $COUNT_10 -30 $PGVR
81
82         runthreads 2 test_brw_write $COUNT -30 $PG
83         runthreads 2 test_brw_read $COUNT -30 $PG
84
85         [ "$PGVW" ] && runthreads 2 test_brw_write $COUNT_10 -30 $PGVW
86         [ "$PGVR" ] && runthreads 2 test_brw_read $COUNT_10 -30 $PGVR
87
88         runthreads 10 test_brw_write $COUNT_10 -30 $PG
89         runthreads 10 test_brw_read $COUNT_10 -30 $PG
90
91         [ "$PGVW" ] && runthreads 10 test_brw_write $COUNT_100 -60 $PGVW
92         [ "$PGVR" ] && runthreads 10 test_brw_read $COUNT_100 -60 $PGVR
93
94         runthreads 32 test_brw_write $COUNT_10 -30 $PG
95         runthreads 32 test_brw_read $COUNT_10 -30 $PG
96
97         [ "$PGVW" ] && runthreads 32 test_brw_write $COUNT_100 -60 $PGVW
98         [ "$PGVR" ] && runthreads 32 test_brw_read $COUNT_100 -60 $PGVR
99
100         runthreads 64 test_brw_write $COUNT_10 -30 $PG
101         runthreads 64 test_brw_read $COUNT_10 -30 $PG
102
103         [ "$PGVW" ] && runthreads 64 test_brw_write $COUNT_100 -60 $PGVW
104         [ "$PGVR" ] && runthreads 64 test_brw_read $COUNT_100 -60 $PGVR
105
106         runthreads 100 test_brw_write $COUNT_100 -60 $PG
107         runthreads 100 test_brw_read $COUNT_100 -60 $PG
108
109         [ "$PGVW" ] && runthreads 100 test_brw_write $COUNT_100 -60 $PGVW
110         [ "$PGVR" ] && runthreads 100 test_brw_read $COUNT_100 -60 $PGVR
111 done
112
113 cleanup