Whamcloud - gitweb
LU-11010 tests: remove calls to return after skip()
[fs/lustre-release.git] / lustre / tests / posix.sh
index 396e930..2f4e9f4 100755 (executable)
@@ -2,15 +2,21 @@
 #set -vx
 set -e
 
+ONLY=${ONLY:-"$*"}
+
+# bug number for skipped test:
+ALWAYS_EXCEPT="$POSIX_EXCEPT"
+# UPDATE THE COMMENT ABOVE WITH BUG NUMBERS WHEN CHANGING ALWAYS_EXCEPT!
+
+[ "$ALWAYS_EXCEPT$EXCEPT" ] &&
+       echo "Skipping tests: $ALWAYS_EXCEPT $EXCEPT"
+
 LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
 . $LUSTRE/tests/test-framework.sh
 init_test_env $@
 . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
 init_logging
 
-build_test_filter
-check_and_setup_lustre
-
 POSIX_DIR=${POSIX_DIR:-"$LUSTRE/tests/posix"}
 POSIX_SRC=${POSIX_SRC:-"/usr/src/posix"}
 BASELINE_FS=${BASELINE_FS:-"ext4"}
@@ -18,6 +24,18 @@ BASELINE_FS=${BASELINE_FS:-"ext4"}
 # SLES does not support read-write access to an ext4 file system by default
 [[ -e /etc/SuSE-release ]] && BASELINE_FS=ext3
 
+if [[ $(facet_fstype $SINGLEMDS) = zfs ]]; then
+       BASELINE_FS=zfs
+       ! which $ZFS $ZPOOL >/dev/null 2>&1 &&
+               skip_env "need $ZFS and $ZPOOL commands"
+
+       POSIX_ZPOOL=$FSNAME-posix
+       POSIX_ZFS=$POSIX_ZPOOL/${POSIX_ZPOOL##$FSNAME-}
+fi
+
+check_and_setup_lustre
+build_test_filter
+
 cleanup_loop_dev() {
     local mnt=$1
     local dev=$2
@@ -34,6 +52,8 @@ cleanup_loop_dev() {
         losetup -d $dev && rm -rf $mnt
         rm -f $file
     fi
+
+       [[ $BASELINE_FS != zfs ]] || destroy_zpool client $POSIX_ZPOOL
 }
 
 setup_loop_dev() {
@@ -49,7 +69,13 @@ setup_loop_dev() {
                echo "can't set up $dev for $file"
                return $rc
        fi
-       if ! eval mkfs.$BASELINE_FS $dev; then
+
+       if [[ $BASELINE_FS = zfs ]]; then
+               create_zpool client $POSIX_ZPOOL $dev || return ${PIPESTATUS[0]}
+               create_zfs client $POSIX_ZFS || return ${PIPESTATUS[0]}
+               dev=$POSIX_ZFS
+
+       elif ! eval mkfs.$BASELINE_FS $dev; then
                rc=$?
                echo "mkfs.$BASELINE_FS on $dev failed"
                return $rc
@@ -72,48 +98,52 @@ test_1() {
        local loopdev
        local rc=0
 
-    # We start at loop1 because posix build uses loop0
-    [ -b /dev/loop/1 ] && loopbase=/dev/loop/
-    [ -b /dev/loop1 ] && loopbase=/dev/loop
-    [ -z "$loopbase" ] && error "/dev/loop/1 and /dev/loop1 gone?"
+       # We start at loop1 because posix build uses loop0
+       [ -b /dev/loop/1 ] && loopbase=/dev/loop/
+       [ -b /dev/loop1 ] && loopbase=/dev/loop
+       if [ -z "$loopbase" ]; then
+               # there is no /dev/loop by default on EL7, LU-6707.
+               load_module loop max_loop=8 || error "load loop module failed"
+               loopbase=/dev/loop
+       fi
 
-    for i in `seq 1 7`; do
-        losetup $loopbase$i > /dev/null 2>&1 && continue || true
-        loopdev=$loopbase$i
-        break
-    done
+       for i in $(seq 1 7); do
+               losetup $loopbase$i > /dev/null 2>&1 && continue || true
+               loopdev=$loopbase$i
+               break
+       done
 
-    [ -z "$loopdev" ] && error "Can not find loop device"
+       [ -z "$loopdev" ] && error "Can not find loop device"
 
-    if ! setup_loop_dev $mntpnt $loopdev $tfile; then
-        cleanup_loop_dev "$mntpnt" "$loopdev" "$tfile"
-        error "Setup loop device failed"
-    fi
+       if ! setup_loop_dev $mntpnt $loopdev $tfile; then
+               cleanup_loop_dev "$mntpnt" "$loopdev" "$tfile"
+               error "Setup loop device failed"
+       fi
 
-    # copy the source over to ext mount point
-    if ! cp -af ${POSIX_SRC}/*.* $mntpnt; then
-        cleanup_loop_dev "$mntpnt" "$loopdev" "$tfile"
-        error "Copy POSIX test suite failed"
-    fi
-    export POSIX_SRC=$mntpnt
-    . $POSIX_DIR/posix.cfg
-
-    setup_posix_users $allnodes
-    if ! setup_posix; then
-        delete_posix_users $allnodes
-        cleanup_loop_dev "$POSIX_SRC"
-        cleanup_loop_dev "$mntpnt" "$loopdev" "$tfile"
-        error "Setup POSIX test suite failed"
-    fi
+       # copy the source over to ext mount point
+       if ! cp -af ${POSIX_SRC}/*.* $mntpnt; then
+               cleanup_loop_dev "$mntpnt" "$loopdev" "$tfile"
+               error "Copy POSIX test suite failed"
+       fi
+       export POSIX_SRC=$mntpnt
+       . $POSIX_DIR/posix.cfg
+
+       setup_posix_users $allnodes
+       if ! setup_posix; then
+               delete_posix_users $allnodes
+               cleanup_loop_dev "$POSIX_SRC"
+               cleanup_loop_dev "$mntpnt" "$loopdev" "$tfile"
+               error "Setup POSIX test suite failed"
+       fi
 
-    log "Run POSIX test against lustre filesystem"
-    run_posix $MOUNT compare || \
-        error_noexit "Run POSIX testsuite on $MOUNT failed"
+       log "Run POSIX test against lustre filesystem"
+       run_posix $MOUNT $MGSNID $FSNAME compare ||
+               error_noexit "Run POSIX testsuite on $MOUNT failed"
 
-    [[ -d "$MOUNT/TESTROOT" ]] && rm -fr $MOUNT/TESTROOT
-    delete_posix_users $allnodes
-    cleanup_loop_dev "$POSIX_SRC"
-    cleanup_loop_dev "$mntpnt" "$loopdev" "$tfile"
+       [[ -d "$MOUNT/TESTROOT" ]] && rm -fr $MOUNT/TESTROOT
+       delete_posix_users $allnodes
+       cleanup_loop_dev "$POSIX_SRC"
+       cleanup_loop_dev "$mntpnt" "$loopdev" "$tfile"
 }
 run_test 1 "install, build, run posix on $BASELINE_FS and lustre, then compare"