Whamcloud - gitweb
LU-3738 tests: improve posix.sh to support BASELINE_FS=zfs
[fs/lustre-release.git] / lustre / tests / posix.sh
index 8615a37..46e9637 100755 (executable)
@@ -8,11 +8,24 @@ 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"}
+
+# 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" && exit 0
+
+       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
@@ -30,43 +43,51 @@ cleanup_loop_dev() {
         losetup -d $dev && rm -rf $mnt
         rm -f $file
     fi
+
+       [[ $BASELINE_FS != zfs ]] || destroy_zpool client $POSIX_ZPOOL
 }
 
 setup_loop_dev() {
-    local mnt=$1
-    local dev=$2
-    local file=$3
-    local rc=0
-
-    echo "Make a loop file system with $file on $dev"
-    dd if=/dev/zero of=$file bs=1024k count=500 > /dev/null
-    if ! losetup $dev $file; then
-        rc=$?
-        echo "can't set up $dev for $file"
-        return $rc
-    fi
-    if ! mkfs.ext4 $dev; then
-        rc=$?
-        echo "mkfs.ext4 on $dev failed"
-        return $rc
-    fi
-    mkdir -p ${mnt}
-    if ! mount -t ext4 $dev $mnt; then
-        rc=$?
-        echo "mount ext4 failed"
-        return $rc
-    fi
-    echo
-    return $rc
+       local mnt=$1
+       local dev=$2
+       local file=$3
+       local rc=0
+
+       echo "Make a loop file system with $file on $dev"
+       dd if=/dev/zero of=$file bs=1024k count=500 > /dev/null
+       if ! losetup $dev $file; then
+               rc=$?
+               echo "can't set up $dev for $file"
+               return $rc
+       fi
+
+       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
+       fi
+       mkdir -p $mnt
+       if ! mount -t $BASELINE_FS $dev $mnt; then
+               rc=$?
+               echo "mount $BASELINE_FS failed"
+               return $rc
+       fi
+       echo
+       return $rc
 }
 
 test_1() {
-    local allnodes="$(comma_list $(nodes_list))"
-    local tfile="$TMP/ext4-file"
-    local mntpnt=$POSIX_SRC/ext4
-    local loopbase
-    local loopdev
-    local rc=0
+       local allnodes="$(comma_list $(nodes_list))"
+       local tfile="$TMP/$BASELINE_FS-file"
+       local mntpnt=$POSIX_SRC/$BASELINE_FS
+       local loopbase
+       local loopdev
+       local rc=0
 
     # We start at loop1 because posix build uses loop0
     [ -b /dev/loop/1 ] && loopbase=/dev/loop/
@@ -111,7 +132,7 @@ test_1() {
     cleanup_loop_dev "$POSIX_SRC"
     cleanup_loop_dev "$mntpnt" "$loopdev" "$tfile"
 }
-run_test 1 "build, install, run posix on ext4 and lustre, then compare"
+run_test 1 "install, build, run posix on $BASELINE_FS and lustre, then compare"
 
 complete $SECONDS
 check_and_cleanup_lustre