set -e
-# bug number: 13129 13129 10124
-ALWAYS_EXCEPT="2 3 15c $REPLAY_DUAL_EXCEPT"
+# bug number: 10124
+ALWAYS_EXCEPT="15c $REPLAY_DUAL_EXCEPT"
SAVE_PWD=$PWD
PTLDEBUG=${PTLDEBUG:--1}
remote_mds_nodsh && skip "remote MDS with nodsh" && exit 0
-[ "$SLOW" = "no" ] && EXCEPT_SLOW="1 2 3 4 5 14"
+[ "$SLOW" = "no" ] && EXCEPT_SLOW="21b"
build_test_filter
-cleanup_and_setup_lustre
+check_and_setup_lustre
+MOUNTED=$(mounted_lustre_filesystems)
+if ! $(echo $MOUNTED | grep -w -q $MOUNT2); then
+ zconf_mount $HOSTNAME $MOUNT2
+ MOUNTED2=yes
+fi
+
assert_DIR
rm -rf $DIR/[df][0-9]*
}
run_test 13 "close resend timeout"
-test_14() {
+test_14a() {
replay_barrier $SINGLEMDS
createmany -o $MOUNT1/$tfile- 25
createmany -o $MOUNT2/$tfile-2- 1
zconf_mount `hostname` $MOUNT2 || error "mount $MOUNT2 fail"
return 0
}
-run_test 14 "timeouts waiting for lost client during replay"
+run_test 14a "timeouts waiting for lost client during replay"
+
+test_14b() {
+ BEFOREUSED=`df -P $DIR | tail -1 | awk '{ print $3 }'`
+ mkdir -p $MOUNT1/$tdir
+ replay_barrier $SINGLEMDS
+ createmany -o $MOUNT1/$tfile- 5
+ echo "data" > $MOUNT2/$tdir/$tfile-2
+ createmany -o $MOUNT1/$tfile-3- 5
+ umount $MOUNT2
+
+ facet_failover $SINGLEMDS
+ # expect recovery don't fail due to VBR
+ df $MOUNT1 || return 1
+
+ # first 25 files should have been replayed
+ unlinkmany $MOUNT1/$tfile- 5 || return 2
+ unlinkmany $MOUNT1/$tfile-3- 5 || return 3
+
+ zconf_mount `hostname` $MOUNT2 || error "mount $MOUNT2 fail"
+ # give ost time to process llogs
+ sleep 3
+ AFTERUSED=`df -P $DIR | tail -1 | awk '{ print $3 }'`
+ log "before $BEFOREUSED, after $AFTERUSED"
+ [ $AFTERUSED -ne $BEFOREUSED ] && \
+ error "after $AFTERUSED > before $BEFOREUSED" && return 4
+ return 0
+}
+run_test 14b "delete ost orphans if gap occured in objids due to VBR"
test_15a() { # was test_15
replay_barrier $SINGLEMDS
}
run_test 21a "commit on sharing"
-shutdown_client() {
- local client=$1
- local mnt=$2
-
- if [ "$FAILURE_MODE" = HARD ]; then
- $POWER_DOWN $client
- while ping -w 3 -c 1 $client > /dev/null 2>&1; do
- echo "waiting for node $client to fail"
- sleep 1
- done
- else
- zconf_umount_clients $client $mnt -f
- fi
-}
-
-# CMD: determine mds index where directory inode presents
-get_mds_dir () {
- local dir=$1
- local file=$dir/$tfile
-
- rm -f $file
- local iused=$(lfs df -i $dir | grep MDT | awk '{print $3}')
- local oldused=($iused)
-
- touch $file
- sleep 1
- iused=$(lfs df -i $dir | grep MDT | awk '{print $3}')
- local newused=($iused)
-
- local num=0
- for ((i=0; i<${#newused[@]}; i++)); do
- if [ ${oldused[$i]} -lt ${newused[$i]} ]; then
- echo $(( i + 1 ))
- rm -f $dir/$tfile
- return 0
- fi
- done
- error "mdt-s : inodes count OLD ${oldused[@]} NEW ${newused[@]}"
-}
-
test_21b_sub () {
local mds=$1
do_node $CLIENT1 rm -f $MOUNT1/$tfile-*
equals_msg `basename $0`: test complete, cleaning up
SLEEP=$((`date +%s` - $NOW))
[ $SLEEP -lt $TIMEOUT ] && sleep $SLEEP
+[ "$MOUNTED2" = yes ] && zconf_umount $HOSTNAME $MOUNT2 || true
check_and_cleanup_lustre
-[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG || true
-
+[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && grep -q FAIL $TESTSUITELOG && exit 1 || true