]> git.proxmox.com Git - mirror_zfs.git/blobdiff - tests/zfs-tests/tests/functional/clean_mirror/clean_mirror_common.kshlib
OpenZFS - Performance regression suite for zfstest
[mirror_zfs.git] / tests / zfs-tests / tests / functional / clean_mirror / clean_mirror_common.kshlib
index 1f234ceb91011a43c927f9d03ffc978271e8e422..328e940c263c4389edf211136830f462472ca029 100644 (file)
@@ -25,7 +25,7 @@
 #
 
 #
-# Copyright (c) 2013 by Delphix. All rights reserved.
+# Copyright (c) 2013, 2015 by Delphix. All rights reserved.
 #
 
 . $STF_SUITE/tests/functional/clean_mirror/default.cfg
 # the contents of the mirror.
 # This code is sourced into each of these test cases.
 
+#
+# Synchronize all the data in pool
+#
+# $1 pool name
+#
+function sync_pool #pool
+{
+       typeset pool=$1
+
+       log_must $SYNC
+       log_must $SLEEP 2
+       # Flush all the pool data.
+       typeset -i ret
+       $ZPOOL scrub $pool >/dev/null 2>&1
+       ret=$?
+       (( $ret != 0 )) && \
+               log_fail "$ZPOOL scrub $pool failed."
+
+       while ! is_pool_scrubbed $pool; do
+               if is_pool_resilvered $pool ; then
+                       log_fail "$pool should not be resilver completed."
+               fi
+               log_must $SLEEP 2
+       done
+}
+
 function overwrite_verify_mirror
 {
        typeset AFFECTED_DEVICE=$1
@@ -60,6 +86,12 @@ function overwrite_verify_mirror
 
        atfile=0
 
+       #
+       # Flush out the cache so that we ensure we're reading from disk.
+       #
+       log_must $ZPOOL export $TESTPOOL
+       log_must $ZPOOL import $TESTPOOL
+
        typeset -i failedcount=0
        while (( atfile < FILE_COUNT )); do
                files[$atfile]=$TESTDIR/file.$atfile
@@ -75,4 +107,6 @@ function overwrite_verify_mirror
                log_fail "of the $FILE_COUNT files $failedcount did not " \
                    "have the same checksum before and after."
        fi
+
+       sync_pool $TESTPOOL
 }