Newer
Older
}
run_test 47 "MDS->OSC failure during precreate cleanup (2824)"
replay_barrier mds
createmany -o $DIR/$tfile 20 || return 1
# OBD_FAIL_OST_EROFS 0x216
fail mds
do_facet ost1 "sysctl -w lustre.fail_loc=0x80000216"
createmany -o $DIR/$tfile 20 20 || return 2
unlinkmany $DIR/$tfile 40 || return 3
do_facet ost1 "sysctl -w lustre.fail_loc=0"
return 0
run_test 48 "MDS->OSC failure during precreate cleanup (2824)"
local oscdev=`grep ${ost1_svc}-osc- $LPROC/devices | awk '{print $1}'`
[ "$oscdev" ] || return 1
$LCTL --device $oscdev recover && $LCTL --device $oscdev 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
multiop $DIR/$tfile s || return 1
replay_barrier mds
#define OBD_FAIL_LDLM_REPLY 0x30c
do_facet mds "sysctl -w lustre.fail_loc=0x8000030c"
fail mds || return 2
do_facet mds "sysctl -w lustre.fail_loc=0x0"
$CHECKSTAT -t file $DIR/$tfile-* && return 3 || true
}
run_test 52 "time out lock replay (3764)"
#b_cray 53 "|X| open request and close reply while two MDC requests in flight"
#b_cray 54 "|X| open request and close reply while two MDC requests in flight"
#b3761 ASSERTION(hash != 0) failed
test_55() {
# OBD_FAIL_MDS_OPEN_CREATE | OBD_FAIL_ONCE
do_facet mds "sysctl -w lustre.fail_loc=0x8000012b"
touch $DIR/$tfile &
# give touch a chance to run
sleep 5
do_facet mds "sysctl -w lustre.fail_loc=0x0"
rm $DIR/$tfile
return 0
run_test 55 "let MDS_CHECK_RESENT return the original return code instead of 0"
#b3440 ASSERTION(rec->ur_fid2->id) failed
run_test 56 "don't replay a symlink open request (3440)"
#recovery one mds-ost setattr from llog
test_57() {
#define OBD_FAIL_MDS_OST_SETATTR 0x12c
do_facet mds "sysctl -w lustre.fail_loc=0x8000012c"
replay_barrier mds
fail mds
sleep 1
$CHECKSTAT -t file $DIR/$tfile || return 1
do_facet mds "sysctl -w lustre.fail_loc=0x0"
run_test 57 "test recovery from llog for setattr op"
#define OBD_FAIL_MDS_OST_SETATTR 0x12c
do_facet mds "sysctl -w lustre.fail_loc=0x8000012c"
mkdir $DIR/$tdir
createmany -o $DIR/$tdir/$tfile-%d 2500
replay_barrier mds
fail mds
sleep 2
$CHECKSTAT -t file $DIR/$tdir/$tfile-* || return 1
do_facet mds "sysctl -w lustre.fail_loc=0x0"
unlinkmany $DIR/$tdir/$tfile-%d 2500
rmdir $DIR/$tdir
}
run_test 58 "test recovery from llog for setattr op (test llog_gen_rec)"
# log_commit_thread vs filter_destroy race used to lead to import use after free
# bug 11658
test_59() {
mkdir $DIR/$tdir
createmany -o $DIR/$tdir/$tfile-%d 200
sync
unlinkmany $DIR/$tdir/$tfile-%d 200
#define OBD_FAIL_PTLRPC_DELAY_RECOV 0x507
sleep 20
rmdir $DIR/$tdir
}
run_test 59 "test log_commit_thread vs filter_destroy race"
# race between add unlink llog vs cat log init in post_recovery (only for b1_6)
# bug 12086: should no oops and No ctxt error for this test
test_60() {
mkdir $DIR/$tdir
createmany -o $DIR/$tdir/$tfile-%d 200
replay_barrier mds
unlinkmany $DIR/$tdir/$tfile-%d 0 100
fail mds
unlinkmany $DIR/$tdir/$tfile-%d 100 100
local no_ctxt=`dmesg | grep "No ctxt"`
[ -z "$no_ctxt" ] || error "ctxt is not initialized in recovery"
}
run_test 60 "test llog post recovery init vs llog unlink"
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
#test race llog recovery thread vs llog cleanup
test_61() {
mkdir $DIR/$tdir
createmany -o $DIR/$tdir/$tfile-%d 800
replay_barrier ost1
# OBD_FAIL_OST_LLOG_RECOVERY_TIMEOUT 0x221
unlinkmany $DIR/$tdir/$tfile-%d 800
do_facet ost "sysctl -w lustre.fail_loc=0x80000221"
facet_failover ost1
sleep 10
fail ost1
sleep 30
do_facet ost "sysctl -w lustre.fail_loc=0x0"
$CHECKSTAT -t file $DIR/$tdir/$tfile-* && return 1
rmdir $DIR/$tdir
}
run_test 61 "test race llog recovery vs llog cleanup"
#test race mds llog sync vs llog cleanup
test_61b() {
# OBD_FAIL_MDS_LLOG_SYNC_TIMEOUT 0x13a
do_facet mds "sysctl -w lustre.fail_loc=0x8000013a"
facet_failover mds
sleep 10
fail mds
do_facet client dd if=/dev/zero of=$DIR/$tfile bs=4k count=1 || return 1
}
run_test 61b "test race mds llog sync vs llog cleanup"
#test race cancel cookie cb vs llog cleanup
test_61c() {
# OBD_FAIL_OST_CANCEL_COOKIE_TIMEOUT 0x222
touch $DIR/$tfile
do_facet ost "sysctl -w lustre.fail_loc=0x80000222"
rm $DIR/$tfile
sleep 10
fail ost1
}
run_test 61c "test race mds llog sync vs llog cleanup"
equals_msg `basename $0`: test complete, cleaning up