Whamcloud - gitweb
Branch HEAD
[fs/lustre-release.git] / lustre / tests / replay-dual.sh
index 3eaea5f..c47082e 100755 (executable)
@@ -2,8 +2,8 @@
 
 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}
@@ -26,7 +26,7 @@ init_test_env $@
 
 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
 
@@ -250,7 +250,7 @@ test_13() {
 }
 run_test 13 "close resend timeout"
 
-test_14() {
+test_14a() {
     replay_barrier $SINGLEMDS
     createmany -o $MOUNT1/$tfile- 25
     createmany -o $MOUNT2/$tfile-2- 1
@@ -268,7 +268,35 @@ test_14() {
     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
@@ -436,46 +464,6 @@ test_21a() {
 }
 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-*