Whamcloud - gitweb
LU-10835 tests: unload dm-flakey module
[fs/lustre-release.git] / lustre / tests / test-framework.sh
index 4b7e0db..693185d 100755 (executable)
@@ -293,7 +293,7 @@ init_test_env() {
        export LUSTRE_RMMOD=${LUSTRE_RMMOD:-$LUSTRE/scripts/lustre_rmmod}
        [ ! -f "$LUSTRE_RMMOD" ] &&
                export LUSTRE_RMMOD=$(which lustre_rmmod 2> /dev/null)
-       export LUSTRE_ROUTES_COVERSION=${LUSTRE_ROUTES_CONVERSION:-$LUSTRE/scripts/lustre_routes_conversion}
+       export LUSTRE_ROUTES_CONVERSION=${LUSTRE_ROUTES_CONVERSION:-$LUSTRE/scripts/lustre_routes_conversion}
        [ ! -f "$LUSTRE_ROUTES_CONVERSION" ] &&
                export LUSTRE_ROUTES_CONVERSION=$(which lustre_routes_conversion 2> /dev/null)
        export LFS_MIGRATE=${LFS_MIGRATE:-$LUSTRE/scripts/lfs_migrate}
@@ -756,8 +756,10 @@ fs_log_size() {
 
        case $(facet_fstype $facet) in
                ldiskfs) size=50;; # largest seen is 44, leave some headroom
-               zfs)     size=$(lctl get_param osc.$FSNAME-OST*.import |
-                       awk '/grant_block_size:/ { print $2 * 2; exit; }');;
+               # grant_block_size is in bytes, allow at least 2x max blocksize
+               zfs)     size=$(lctl get_param osc.$FSNAME*.import |
+                               awk '/grant_block_size:/ {print $2/512; exit;}')
+                         ;;
        esac
 
        echo -n $size
@@ -1473,7 +1475,8 @@ mount_facets () {
                [ $RC -eq 0 ] && continue
 
                if [ "$TESTSUITE.$TESTNAME" = "replay-dual.test_0a" ]; then
-                       skip "Restart of $facet failed!." && touch $LU482_FAILED
+                       skip_noexit "Restart of $facet failed!." &&
+                               touch $LU482_FAILED
                else
                        error "Restart of $facet failed!"
                fi
@@ -1827,6 +1830,9 @@ dm_cleanup_dev() {
 
        # detach a loop device
        [[ $major -ne 7 ]] || cleanup_loop_device $facet /dev/loop$minor
+
+       # unload dm-flakey module
+       do_facet $facet "modprobe -r dm-flakey" || true
 }
 
 mount_facet() {
@@ -3580,59 +3586,20 @@ facet_failover_host() {
        fi
 }
 
-detect_active() {
-       local facet=$1
-       [ "$CLIENTONLY" ] && echo $facet && return
-
-       local failover=$(facet_failover_host $facet)
-
-       # failover is not associated with all facet types:
-       # "AGT" facet type (remote HSM agents) does not
-       # have a failover.
-       [[ -z "$failover" ]] && echo $facet && return
-
-       local host=$(facet_host $facet)
-       local dev=$(facet_device $facet)
-
-       # ${facet}_svc can not be used here because of
-       # facet_active() is called before this var initialized
-       local svc=$(do_node $host $E2LABEL ${dev})
-
-       # active facet is ${facet}failover if device is mounted on failover
-       # on other cases active facet is $facet
-       [[ $dev = $(do_node $failover \
-                       lctl get_param -n *.$svc.mntdev 2>/dev/null) ]] &&
-               echo ${facet}failover && return
-
-       echo $facet
-}
-
-init_active() {
-       local facet=$1
-
-       local active=$(detect_active $facet)
-       echo "${facet}active=$active" > $TMP/${facet}active
-}
-
 facet_active() {
-       local facet=$1
-       local activevar=${facet}active
+    local facet=$1
+    local activevar=${facet}active
 
-       # file is missing (nothing to store) if fail() is not
-       # executed during this test session yet;
-       # file content:
-       #      ost1active=ost1failover
-       #      ost1active=ost1
-       # let's detect active facet based on current lustre state
-       if [ ! -f $TMP/${facet}active ] ; then
-               init_active $facet
-       fi
-       source $TMP/${facet}active
+    if [ -f $TMP/${facet}active ] ; then
+        source $TMP/${facet}active
+    fi
 
-       # is ${facet}active set somewhere else?
-       active=${!activevar}
-       [[ -z "$active" ]] && exit 1
-       echo -n ${active}
+    active=${!activevar}
+    if [ -z "$active" ] ; then
+        echo -n ${facet}
+    else
+        echo -n ${active}
+    fi
 }
 
 facet_active_host() {
@@ -4132,6 +4099,13 @@ unmount_fstype() {
 ## MountConf setup
 
 stopall() {
+    # make sure we are using the primary server, so test-framework will
+    # be able to clean up properly.
+    activemds=`facet_active mds1`
+    if [ $activemds != "mds1" ]; then
+        fail mds1
+    fi
+
     local clients=$CLIENTS
     [ -z $clients ] && clients=$(hostname)
 
@@ -5119,7 +5093,7 @@ run_e2fsck() {
        if [ -n "$(grep "DNE mode isn't supported" $log)" ]; then
                rm -f $log
                if [ $MDSCOUNT -gt 1 ]; then
-                       skip "DNE mode isn't supported!"
+                       skip_noexit "DNE mode isn't supported!"
                        cleanupall
                        exit_status
                else
@@ -5802,7 +5776,7 @@ skip_env () {
        $FAIL_ON_SKIP_ENV && error false $@ || skip $@
 }
 
-skip() {
+skip_noexit() {
        echo
        log " SKIP: $TESTSUITE $TESTNAME $@"
 
@@ -5817,8 +5791,13 @@ skip() {
                echo "$TESTSUITE: SKIP: $TESTNAME $@" >> $TESTSUITELOG || true
 }
 
+skip() {
+       skip_noexit
+       exit 0
+}
+
 build_test_filter() {
-    EXCEPT="$EXCEPT $(testslist_filter)"
+       EXCEPT="$EXCEPT $(testslist_filter)"
 
        for O in $ONLY; do
                if [[ $O = [0-9]*-[0-9]* ]]; then
@@ -5892,32 +5871,32 @@ run_test() {
        ALWAYS_SKIPPED="y"
        testname=EXCEPT_$1
        if [ ${!testname}x != x ]; then
-               TESTNAME=test_$1 skip "skipping excluded test $1"
+               TESTNAME=test_$1 skip_noexit "skipping excluded test $1"
                return 0
        fi
        testname=EXCEPT_$base
        if [ ${!testname}x != x ]; then
-               TESTNAME=test_$1 skip "skipping excluded test $1 (base $base)"
+               TESTNAME=test_$1 skip_noexit "skipping excluded test $1 (base $base)"
                return 0
        fi
        testname=EXCEPT_ALWAYS_$1
        if [ ${!testname}x != x ]; then
-               TESTNAME=test_$1 skip "skipping ALWAYS excluded test $1"
+               TESTNAME=test_$1 skip_noexit "skipping ALWAYS excluded test $1"
                return 0
        fi
        testname=EXCEPT_ALWAYS_$base
        if [ ${!testname}x != x ]; then
-               TESTNAME=test_$1 skip "skipping ALWAYS excluded test $1 (base $base)"
+               TESTNAME=test_$1 skip_noexit "skipping ALWAYS excluded test $1 (base $base)"
                return 0
        fi
        testname=EXCEPT_SLOW_$1
        if [ ${!testname}x != x ]; then
-               TESTNAME=test_$1 skip "skipping SLOW test $1"
+               TESTNAME=test_$1 skip_noexit "skipping SLOW test $1"
                return 0
        fi
        testname=EXCEPT_SLOW_$base
        if [ ${!testname}x != x ]; then
-               TESTNAME=test_$1 skip "skipping SLOW test $1 (base $base)"
+               TESTNAME=test_$1 skip_noexit "skipping SLOW test $1 (base $base)"
                return 0
        fi
 
@@ -7201,7 +7180,7 @@ create_pool() {
        local fsname=${1%%.*}
        local poolname=${1##$fsname.}
 
-       trap "destroy_test_pools $fsname" EXIT
+       stack_trap "destroy_test_pools $fsname" EXIT
        do_facet mgs lctl pool_new $1
        local RC=$?
        # get param should return err unless pool is created
@@ -8762,8 +8741,7 @@ lss_gen_conf()
 
        if ! combined_mgs_mds ; then
                [ $(facet_fstype mgs) != zfs ] &&
-                       skip "Lustre snapshot 1 only works for ZFS backend" &&
-                       exit 0
+                       skip "Lustre snapshot 1 only works for ZFS backend"
 
                local host=$(facet_active_host mgs)
                local dir=$(dirname $(facet_vdevice mgs))
@@ -8777,8 +8755,7 @@ lss_gen_conf()
 
        for num in `seq $MDSCOUNT`; do
                [ $(facet_fstype mds$num) != zfs ] &&
-                       skip "Lustre snapshot 1 only works for ZFS backend" &&
-                       exit 0
+                       skip "Lustre snapshot 1 only works for ZFS backend"
 
                lss_gen_conf_one mds$num MDT $((num - 1)) ||
                        lss_err "generate lss conf (mds$num)"
@@ -8786,8 +8763,7 @@ lss_gen_conf()
 
        for num in `seq $OSTCOUNT`; do
                [ $(facet_fstype ost$num) != zfs ] &&
-                       skip "Lustre snapshot 1 only works for ZFS backend" &&
-                       exit 0
+                       skip "Lustre snapshot 1 only works for ZFS backend"
 
                lss_gen_conf_one ost$num OST $((num - 1)) ||
                        lss_err "generate lss conf (ost$num)"