Whamcloud - gitweb
* vibnal fixes
[fs/lustre-release.git] / lustre / tests / replay-single.sh
index a65ba63..1f3e2d6 100755 (executable)
@@ -13,42 +13,38 @@ init_test_env $@
 
 . ${CONFIG:=$LUSTRE/tests/cfg/lmv.sh}
 
+build_test_filter
+
+assert_env MDSCOUNT
+
 # Skip these tests
 ALWAYS_EXCEPT=""
 
-
 gen_config() {
     rm -f $XMLCONFIG
 
     if [ "$MDSCOUNT" -gt 1 ]; then
-        add_lmv lmv1
-        for num in `seq $MDSCOUNT`; do
-            MDSDEV=$TMP/mds${num}-`hostname`
-            add_mds mds$num --dev $MDSDEV --size $MDSSIZE --master --lmv lmv1
+        add_lmv lmv1_svc
+        for mds in `mds_list`; do
+            MDSDEV=$TMP/${mds}-`hostname`
+            add_mds $mds --dev $MDSDEV --size $MDSSIZE --lmv lmv1_svc
         done
-        add_lov_to_lmv lov1 lmv1 --stripe_sz $STRIPE_BYTES \
+        add_lov_to_lmv lov1 lmv1_svc --stripe_sz $STRIPE_BYTES \
            --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
-        add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
-        add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
-        add_client client --lmv lmv1 --lov lov1 --path $MOUNT
+       MDS=lmv1
     else
         add_mds mds1 --dev $MDSDEV --size $MDSSIZE
-        if [ ! -z "$mdsfailover_HOST" ]; then
-            add_mdsfailover mds --dev $MDSDEV --size $MDSSIZE
+        if [ ! -z "$mds1failover_HOST" ]; then
+            add_mdsfailover mds1 --dev $MDSDEV --size $MDSSIZE
         fi
-
-        add_lov lov1 mds1 --stripe_sz $STRIPE_BYTES \
+       add_lov lov1 mds1 --stripe_sz $STRIPE_BYTES \
            --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
-        add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
-        add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
-        add_client client --mds mds1_svc --lov lov1 --path $MOUNT
+       MDS=mds1_svc
     fi
     
-    add_lov lov1 mds --stripe_sz $STRIPE_BYTES \
-       --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0
     add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE
     add_ost ost2 --lov lov1 --dev ${OSTDEV}-2 --size $OSTSIZE
-    add_client client mds --lov lov1 --path $MOUNT
+    add_client client $MDS --lov lov1 --path $MOUNT
 }
 
 build_test_filter
@@ -56,18 +52,14 @@ build_test_filter
 cleanup() {
     # make sure we are using the primary MDS, so the config log will
     # be able to clean up properly.
-    activemds=`facet_active mds`
-    if [ $activemds != "mds" ]; then
-        fail mds
+    activemds=`facet_active mds1`
+    if [ $activemds != "mds1" ]; then
+        fail mds1
     fi
     zconf_umount `hostname` $MOUNT
-    if [ "$MDSCOUNT" -gt 1 ]; then
-        for num in `seq $MDSCOUNT`; do
-            stop mds$num ${FORCE} $MDSLCONFARGS
-        done
-    else
-        stop mds ${FORCE} $MDSLCONFARGS
-    fi
+    for mds in `mds_list`; do
+       stop $mds ${FORCE} $MDSLCONFARGS
+    done
     stop ost2 ${FORCE} --dump cleanup.log
     stop ost ${FORCE} --dump cleanup.log
 }
@@ -87,7 +79,9 @@ setup() {
     start ost --reformat $OSTLCONFARGS 
     start ost2 --reformat $OSTLCONFARGS 
     [ "$DAEMONFILE" ] && $LCTL debug_daemon start $DAEMONFILE $DAEMONSIZE
-    start mds $MDSLCONFARGS --reformat
+    for mds in `mds_list`; do
+       start $mds --reformat $MDSLCONFARGS
+    done
     grep " $MOUNT " /proc/mounts || zconf_mount `hostname` $MOUNT
 }
 
@@ -115,18 +109,18 @@ test_0b() {
 run_test 0b "ensure object created after recover exists. (3284)"
 
 test_1() {
-    replay_barrier mds2
+    replay_barrier mds1
     mcreate $DIR/$tfile
-    fail mds2
+    fail mds1
     $CHECKSTAT -t file $DIR/$tfile || return 1
     rm $DIR/$tfile
 }
 run_test 1 "simple create"
 
 test_2a() {
-    replay_barrier mds
+    replay_barrier mds1
     touch $DIR/$tfile
-    fail mds
+    fail mds1
     $CHECKSTAT -t file $DIR/$tfile || return 1
     rm $DIR/$tfile
 }
@@ -134,43 +128,43 @@ run_test 2a "touch"
 
 test_2b() {
     ./mcreate $DIR/$tfile
-    replay_barrier mds
+    replay_barrier mds1
     touch $DIR/$tfile
-    fail mds
+    fail mds1
     $CHECKSTAT -t file $DIR/$tfile || return 1
     rm $DIR/$tfile
 }
 run_test 2b "touch"
 
 test_3a() {
-    replay_barrier mds
+    replay_barrier mds1
     mcreate $DIR/$tfile
     o_directory $DIR/$tfile
-    fail mds
+    fail mds1
     $CHECKSTAT -t file $DIR/$tfile || return 2
     rm $DIR/$tfile
 }
 run_test 3a "replay failed open(O_DIRECTORY)"
 
 test_3b() {
-    replay_barrier mds
+    replay_barrier mds1
 #define OBD_FAIL_MDS_OPEN_PACK | OBD_FAIL_ONCE
     do_facet mds "sysctl -w lustre.fail_loc=0x80000114"
     touch $DIR/$tfile
     do_facet mds "sysctl -w lustre.fail_loc=0"
-    fail mds
+    fail mds1
     $CHECKSTAT -t file $DIR/$tfile && return 2
     return 0
 }
 run_test 3b "replay failed open -ENOMEM"
 
 test_3c() {
-    replay_barrier mds
+    replay_barrier mds1
 #define OBD_FAIL_MDS_ALLOC_OBDO | OBD_FAIL_ONCE
     do_facet mds "sysctl -w lustre.fail_loc=0x80000128"
     touch $DIR/$tfile
     do_facet mds "sysctl -w lustre.fail_loc=0"
-    fail mds
+    fail mds1
 
     $CHECKSTAT -t file $DIR/$tfile && return 2
     return 0
@@ -178,11 +172,11 @@ test_3c() {
 run_test 3c "replay failed open -ENOMEM"
 
 test_4() {
-    replay_barrier mds
+    replay_barrier mds1
     for i in `seq 10`; do
         echo "tag-$i" > $DIR/$tfile-$i
     done 
-    fail mds
+    fail mds1
     for i in `seq 10`; do
       grep -q "tag-$i" $DIR/$tfile-$i || error "$tfile-$i"
     done 
@@ -190,9 +184,9 @@ test_4() {
 run_test 4 "|x| 10 open(O_CREAT)s"
 
 test_4b() {
-    replay_barrier mds
+    replay_barrier mds1
     rm -rf $DIR/$tfile-*
-    fail mds
+    fail mds1
     $CHECKSTAT -t file $DIR/$tfile-* && return 1 || true
 }
 run_test 4b "|x| rm 10 files"
@@ -200,11 +194,11 @@ run_test 4b "|x| rm 10 files"
 # The idea is to get past the first block of precreated files on both 
 # osts, and then replay.
 test_5() {
-    replay_barrier mds
+    replay_barrier mds1
     for i in `seq 220`; do
         echo "tag-$i" > $DIR/$tfile-$i
     done 
-    fail mds
+    fail mds1
     for i in `seq 220`; do
       grep -q "tag-$i" $DIR/$tfile-$i || error "f1c-$i"
     done 
@@ -216,10 +210,10 @@ run_test 5 "|x| 220 open(O_CREAT)"
 
 
 test_6() {
-    replay_barrier mds
+    replay_barrier mds1
     mkdir $DIR/$tdir
     mcreate $DIR/$tdir/$tfile
-    fail mds
+    fail mds1
     $CHECKSTAT -t dir $DIR/$tdir || return 1
     $CHECKSTAT -t file $DIR/$tdir/$tfile || return 2
     sleep 2
@@ -228,18 +222,18 @@ test_6() {
 run_test 6 "mkdir + contained create"
 
 test_6b() {
-    replay_barrier mds
+    replay_barrier mds1
     rm -rf $DIR/$tdir
-    fail mds
+    fail mds1
     $CHECKSTAT -t dir $DIR/$tdir && return 1 || true 
 }
 run_test 6b "|X| rmdir"
 
 test_7() {
     mkdir $DIR/$tdir
-    replay_barrier mds
+    replay_barrier mds1
     mcreate $DIR/$tdir/$tfile
-    fail mds
+    fail mds1
     $CHECKSTAT -t dir $DIR/$tdir || return 1
     $CHECKSTAT -t file $DIR/$tdir/$tfile || return 2
     rm -fr $DIR/$tdir
@@ -247,11 +241,11 @@ test_7() {
 run_test 7 "mkdir |X| contained create"
 
 test_8() {
-    replay_barrier mds
+    replay_barrier mds1
     multiop $DIR/$tfile mo_c &
     MULTIPID=$!
     sleep 1
-    fail mds
+    fail mds1
     ls $DIR/$tfile
     $CHECKSTAT -t file $DIR/$tfile || return 1
     kill -USR1 $MULTIPID || return 2
@@ -261,10 +255,10 @@ test_8() {
 run_test 8 "creat open |X| close"
 
 test_9() {
-    replay_barrier mds
+    replay_barrier mds1
     mcreate $DIR/$tfile
     local old_inum=`ls -i $DIR/$tfile | awk '{print $1}'`
-    fail mds
+    fail mds1
     local new_inum=`ls -i $DIR/$tfile | awk '{print $1}'`
 
     echo " old_inum == $old_inum, new_inum == $new_inum"
@@ -281,12 +275,13 @@ run_test 9  "|X| create (same inum/gen)"
 
 test_10() {
     mcreate $DIR/$tfile
-    replay_barrier mds
+    replay_barrier mds1
     mv $DIR/$tfile $DIR/$tfile-2
     rm -f $DIR/$tfile
-    fail mds
+    fail mds1
+    
     $CHECKSTAT $DIR/$tfile && return 1
-    $CHECKSTAT $DIR/$tfile-2 ||return 2
+    $CHECKSTAT $DIR/$tfile-2 || return 2
     rm $DIR/$tfile-2
     return 0
 }
@@ -296,11 +291,11 @@ test_11() {
     mcreate $DIR/$tfile
     echo "old" > $DIR/$tfile
     mv $DIR/$tfile $DIR/$tfile-2
-    replay_barrier mds
+    replay_barrier mds1
     echo "new" > $DIR/$tfile
     grep new $DIR/$tfile 
     grep old $DIR/$tfile-2
-    fail mds
+    fail mds1
     grep new $DIR/$tfile || return 1
     grep old $DIR/$tfile-2 || return 2
 }
@@ -313,11 +308,11 @@ test_12() {
     # give multiop a chance to open
     sleep 1
     rm -f $DIR/$tfile
-    replay_barrier mds
+    replay_barrier mds1
     kill -USR1 $pid
     wait $pid || return 1
 
-    fail mds
+    fail mds1
     [ -e $DIR/$tfile ] && return 2
     return 0
 }
@@ -334,8 +329,8 @@ test_13() {
     sleep 1 
     chmod 0 $DIR/$tfile
     $CHECKSTAT -p 0 $DIR/$tfile
-    replay_barrier mds
-    fail mds
+    replay_barrier mds1
+    fail mds1
     kill -USR1 $pid
     wait $pid || return 1
 
@@ -350,11 +345,11 @@ test_14() {
     # give multiop a chance to open
     sleep 1 
     rm -f $DIR/$tfile
-    replay_barrier mds
+    replay_barrier mds1
     kill -USR1 $pid || return 1
     wait $pid || return 2
 
-    fail mds
+    fail mds1
     [ -e $DIR/$tfile ] && return 3
     return 0
 }
@@ -366,12 +361,12 @@ test_15() {
     # give multiop a chance to open
     sleep 1 
     rm -f $DIR/$tfile
-    replay_barrier mds
+    replay_barrier mds1
     touch $DIR/g11 || return 1
     kill -USR1 $pid
     wait $pid || return 2
 
-    fail mds
+    fail mds1
     [ -e $DIR/$tfile ] && return 3
     touch $DIR/h11 || return 4
     return 0
@@ -380,11 +375,11 @@ run_test 15 "open(O_CREAT), unlink |X|  touch new, close"
 
 
 test_16() {
-    replay_barrier mds
+    replay_barrier mds1
     mcreate $DIR/$tfile
     munlink $DIR/$tfile
     mcreate $DIR/$tfile-2
-    fail mds
+    fail mds1
     [ -e $DIR/$tfile ] && return 1
     [ -e $DIR/$tfile-2 ] || return 2
     munlink $DIR/$tfile-2 || return 3
@@ -392,12 +387,12 @@ test_16() {
 run_test 16 "|X| open(O_CREAT), unlink, touch new,  unlink new"
 
 test_17() {
-    replay_barrier mds
+    replay_barrier mds1
     multiop $DIR/$tfile O_c &
     pid=$!
     # give multiop a chance to open
     sleep 1 
-    fail mds
+    fail mds1
     kill -USR1 $pid || return 1
     wait $pid || return 2
     $CHECKSTAT -t file $DIR/$tfile || return 3
@@ -406,7 +401,7 @@ test_17() {
 run_test 17 "|X| open(O_CREAT), |replay| close"
 
 test_18() {
-    replay_barrier mds
+    replay_barrier mds1
     multiop $DIR/$tfile O_tSc &
     pid=$!
     # give multiop a chance to open
@@ -417,7 +412,7 @@ test_18() {
     kill -USR1 $pid
     wait $pid || return 2
 
-    fail mds
+    fail mds1
     [ -e $DIR/$tfile ] && return 3
     [ -e $DIR/$tfile-2 ] || return 4
     # this touch frequently fails
@@ -430,25 +425,25 @@ run_test 18 "|X| open(O_CREAT), unlink, touch new, close, touch, unlink"
 
 # bug 1855 (a simpler form of test_11 above)
 test_19() {
-    replay_barrier mds
+    replay_barrier mds1
     mcreate $DIR/$tfile
     echo "old" > $DIR/$tfile
     mv $DIR/$tfile $DIR/$tfile-2
     grep old $DIR/$tfile-2
-    fail mds
+    fail mds1
     grep old $DIR/$tfile-2 || return 2
 }
 run_test 19 "|X| mcreate, open, write, rename "
 
 test_20() {
-    replay_barrier mds
+    replay_barrier mds1
     multiop $DIR/$tfile O_tSc &
     pid=$!
     # give multiop a chance to open
     sleep 1 
     rm -f $DIR/$tfile
 
-    fail mds
+    fail mds1
     kill -USR1 $pid
     wait $pid || return 1
     [ -e $DIR/$tfile ] && return 2
@@ -457,7 +452,7 @@ test_20() {
 run_test 20 "|X| open(O_CREAT), unlink, replay, close (test mds_cleanup_orphans)"
 
 test_21() {
-    replay_barrier mds
+    replay_barrier mds1
     multiop $DIR/$tfile O_tSc &
     pid=$!
     # give multiop a chance to open
@@ -465,7 +460,7 @@ test_21() {
     rm -f $DIR/$tfile
     touch $DIR/g11 || return 1
 
-    fail mds
+    fail mds1
     kill -USR1 $pid
     wait $pid || return 2
     [ -e $DIR/$tfile ] && return 3
@@ -480,10 +475,10 @@ test_22() {
     # give multiop a chance to open
     sleep 1 
 
-    replay_barrier mds
+    replay_barrier mds1
     rm -f $DIR/$tfile
 
-    fail mds
+    fail mds1
     kill -USR1 $pid
     wait $pid || return 1
     [ -e $DIR/$tfile ] && return 2
@@ -497,11 +492,11 @@ test_23() {
     # give multiop a chance to open
     sleep 1 
 
-    replay_barrier mds
+    replay_barrier mds1
     rm -f $DIR/$tfile
     touch $DIR/g11 || return 1
 
-    fail mds
+    fail mds1
     kill -USR1 $pid
     wait $pid || return 2
     [ -e $DIR/$tfile ] && return 3
@@ -516,8 +511,8 @@ test_24() {
     # give multiop a chance to open
     sleep 1 
 
-    replay_barrier mds
-    fail mds
+    replay_barrier mds1
+    fail mds1
     rm -f $DIR/$tfile
     kill -USR1 $pid
     wait $pid || return 1
@@ -533,8 +528,8 @@ test_25() {
     sleep 1 
     rm -f $DIR/$tfile
 
-    replay_barrier mds
-    fail mds
+    replay_barrier mds1
+    fail mds1
     kill -USR1 $pid
     wait $pid || return 1
     [ -e $DIR/$tfile ] && return 2
@@ -543,7 +538,7 @@ test_25() {
 run_test 25 "open(O_CREAT), unlink, replay, close (test mds_cleanup_orphans)"
 
 test_26() {
-    replay_barrier mds
+    replay_barrier mds1
     multiop $DIR/$tfile-1 O_tSc &
     pid1=$!
     multiop $DIR/$tfile-2 O_tSc &
@@ -555,7 +550,7 @@ test_26() {
     kill -USR1 $pid2
     wait $pid2 || return 1
 
-    fail mds
+    fail mds1
     kill -USR1 $pid1
     wait $pid1 || return 2
     [ -e $DIR/$tfile-1 ] && return 3
@@ -565,7 +560,7 @@ test_26() {
 run_test 26 "|X| open(O_CREAT), unlink two, close one, replay, close one (test mds_cleanup_orphans)"
 
 test_27() {
-    replay_barrier mds
+    replay_barrier mds1
     multiop $DIR/$tfile-1 O_tSc &
     pid1=$!
     multiop $DIR/$tfile-2 O_tSc &
@@ -575,7 +570,7 @@ test_27() {
     rm -f $DIR/$tfile-1
     rm -f $DIR/$tfile-2
 
-    fail mds
+    fail mds1
     kill -USR1 $pid1
     wait $pid1 || return 1
     kill -USR1 $pid2
@@ -593,13 +588,13 @@ test_28() {
     pid2=$!
     # give multiop a chance to open
     sleep 1 
-    replay_barrier mds
+    replay_barrier mds1
     rm -f $DIR/$tfile-1
     rm -f $DIR/$tfile-2
     kill -USR1 $pid2
     wait $pid2 || return 1
 
-    fail mds
+    fail mds1
     kill -USR1 $pid1
     wait $pid1 || return 2
     [ -e $DIR/$tfile-1 ] && return 3
@@ -615,11 +610,11 @@ test_29() {
     pid2=$!
     # give multiop a chance to open
     sleep 1 
-    replay_barrier mds
+    replay_barrier mds1
     rm -f $DIR/$tfile-1
     rm -f $DIR/$tfile-2
 
-    fail mds
+    fail mds1
     kill -USR1 $pid1
     wait $pid1 || return 1
     kill -USR1 $pid2
@@ -640,8 +635,8 @@ test_30() {
     rm -f $DIR/$tfile-1
     rm -f $DIR/$tfile-2
 
-    replay_barrier mds
-    fail mds
+    replay_barrier mds1
+    fail mds1
     kill -USR1 $pid1
     wait $pid1 || return 1
     kill -USR1 $pid2
@@ -661,9 +656,9 @@ test_31() {
     sleep 1 
     rm -f $DIR/$tfile-1
 
-    replay_barrier mds
+    replay_barrier mds1
     rm -f $DIR/$tfile-2
-    fail mds
+    fail mds1
     kill -USR1 $pid1
     wait $pid1 || return 1
     kill -USR1 $pid2
@@ -684,7 +679,7 @@ test_32() {
     # give multiop a chance to open
     sleep 1
     mds_evict_client
-    df $MOUNT || df $MOUNT || return 1
+    df $MOUNT || sleep 1 && df $MOUNT || return 1
     kill -USR1 $pid1
     kill -USR1 $pid2
     sleep 1
@@ -694,9 +689,9 @@ run_test 32 "close() notices client eviction; close() after client eviction"
 
 # Abort recovery before client complete
 test_33() {
-    replay_barrier mds
+    replay_barrier mds1
     touch $DIR/$tfile
-    fail_abort mds
+    fail_abort mds1
     # this file should be gone, because the replay was aborted
     $CHECKSTAT -t file $DIR/$tfile && return 1
     return 0
@@ -710,8 +705,8 @@ test_34() {
     sleep 1 
     rm -f $DIR/$tfile
 
-    replay_barrier mds
-    fail_abort mds
+    replay_barrier mds1
+    fail_abort mds1
     kill -USR1 $pid
     [ -e $DIR/$tfile ] && return 1
     sync
@@ -730,7 +725,7 @@ test_35() {
     sync
     sleep 1
     # give a chance to remove from MDS
-    fail_abort mds
+    fail_abort mds1
     $CHECKSTAT -t file $DIR/$tfile && return 1 || true
 }
 run_test 35 "test recovery from llog for unlink op"
@@ -738,10 +733,10 @@ run_test 35 "test recovery from llog for unlink op"
 # b=2432 resent cancel after replay uses wrong cookie,
 # so don't resend cancels
 test_36() {
-    replay_barrier mds
+    replay_barrier mds1
     touch $DIR/$tfile
     checkstat $DIR/$tfile
-    facet_failover mds
+    facet_failover mds1
     cancel_lru_locks MDC
     if dmesg | grep "unknown lock cookie"; then 
        echo "cancel after replay failed"
@@ -760,10 +755,10 @@ test_37() {
     sleep 1 
     rmdir $DIR/$tfile
 
-    replay_barrier mds
+    replay_barrier mds1
     # clear the dmesg buffer so we only see errors from this recovery
     dmesg -c >/dev/null
-    fail_abort mds
+    fail_abort mds1
     kill -USR1 $pid
     dmesg | grep  "mds_unlink_orphan.*error .* unlinking orphan" && return 1
     sync
@@ -774,8 +769,8 @@ run_test 37 "abort recovery before client does replay (test mds_cleanup_orphans
 test_38() {
     createmany -o $DIR/$tfile-%d 800
     unlinkmany $DIR/$tfile-%d 0 400
-    replay_barrier mds
-    fail mds
+    replay_barrier mds1
+    fail mds1
     unlinkmany $DIR/$tfile-%d 400 400
     sleep 2
     $CHECKSTAT -t file $DIR/$tfile-* && return 1 || true
@@ -784,9 +779,9 @@ run_test 38 "test recovery from unlink llog (test llog_gen_rec) "
 
 test_39() {
     createmany -o $DIR/$tfile-%d 800
-    replay_barrier mds
+    replay_barrier mds1
     unlinkmany $DIR/$tfile-%d 0 400
-    fail mds
+    fail mds1
     unlinkmany $DIR/$tfile-%d 400 400
     sleep 2
     $CHECKSTAT -t file $DIR/$tfile-* && return 1 || true
@@ -806,7 +801,7 @@ test_40(){
     writeme -s $MOUNT/${tfile}-2 &
     WRITE_PID=$!
     sleep 1
-    facet_failover mds
+    facet_failover mds1
 #define OBD_FAIL_MDS_CONNECT_NET         0x117
     do_facet mds "sysctl -w lustre.fail_loc=0x80000117"
     kill -USR1 $PID
@@ -878,11 +873,11 @@ run_test 42 "recovery after ost failure"
 # b=2530
 # timeout in MDS/OST recovery RPC will LBUG MDS
 test_43() {
-    replay_barrier mds
+    replay_barrier mds1
 
     # OBD_FAIL_OST_CREATE_NET 0x204
     do_facet ost "sysctl -w lustre.fail_loc=0x80000204"
-    facet_failover mds
+    facet_failover mds1
     df $MOUNT || return 1
     sleep 10
     do_facet ost "sysctl -w lustre.fail_loc=0"
@@ -928,7 +923,7 @@ run_test 45 "Handle failed close"
 test_46() {
     dmesg -c >/dev/null
     drop_reply "touch $DIR/$tfile"
-    fail mds
+    fail mds1
     # ironically, the previous test, 45, will cause a real forced close,
     # so just look for one for this test
     dmesg | grep -i "force closing client file handle for $tfile" && return 1
@@ -961,6 +956,61 @@ test_47() {
 }
 run_test 47 "MDS->OSC failure during precreate cleanup (2824)"
 
+
+test_48() {
+    createmany -o $DIR/${tfile}- 100
+    $CHECKSTAT $DIR/${tfile}-99 || return 1
+    mds_evict_client
+    df $MOUNT || df $MOUNT || return 2
+    sleep 1
+    $CHECKSTAT $DIR/${tfile}-99 || return 3
+
+    dmesg -c >/dev/null
+    replay_barrier mds1
+    fail mds1
+    unlinkmany $DIR/${tfile}- 100 || return 4
+    if dmesg | grep "back in time"; then 
+       echo "server went back in time!"
+       return 5
+    fi
+    return 0
+}
+run_test 48 "Don't lose transno when client is evicted (2525)"
+
+# b=3550 - replay of unlink
+test_49() {
+    replay_barrier mds1
+    createmany -o $DIR/$tfile-%d 400 || return 1
+    unlinkmany $DIR/$tfile-%d 0 400 || return 2
+    fail mds1
+    $CHECKSTAT -t file $DIR/$tfile-* && return 3 || true
+}
+run_test 49 "re-write records to llog as written during fail"
+
+test_50() {
+    local osc_dev=`$LCTL device_list | \
+               awk '(/ost_svc_mds1_svc/){print $4}' `
+    $LCTL --device %$osc_dev recover &&  $LCTL --device %$osc_dev recover
+    # give the mds_lov_sync threads a chance to run
+    sleep 5
+}
+run_test 50 "Double OSC recovery, don't LASSERT (3812)"
+
+# b3764 timed out lock replay
+test_52() {
+    touch $DIR/$tfile
+    cancel_lru_locks MDC
+
+    multiop $DIR/$tfile s
+    replay_barrier mds1
+    do_facet mds1 "sysctl -w lustre.fail_loc=0x8000030c"
+    fail mds1
+    do_facet mds1 "sysctl -w lustre.fail_loc=0x0"
+
+    $CHECKSTAT -t file $DIR/$tfile-* && return 3 || true
+}
+run_test 52 "time out lock replay (3764)"
+
 equals_msg test complete, cleaning up
 $CLEANUP