. ${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
local dev=$2
losetup -d $dev && rm -rf $mnt
rm -f $file
fi
+
+ [[ $BASELINE_FS != zfs ]] || destroy_zpool client $POSIX_ZPOOL
}
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
}
#
+# Create ZFS storage pool.
+#
+create_zpool() {
+ local facet=$1
+ local poolname=$2
+ local vdev=$3
+ shift 3
+ local opts=${@:-"-o cachefile=none"}
+
+ do_facet $facet "$ZPOOL list -H $poolname >/dev/null 2>&1 ||
+ $ZPOOL create -f $opts $poolname $vdev"
+}
+
+#
+# Create ZFS file system.
+#
+create_zfs() {
+ local facet=$1
+ local dataset=$2
+ shift 2
+ local opts=${@:-"-o mountpoint=legacy"}
+
+ do_facet $facet "$ZFS list -H $dataset >/dev/null 2>&1 ||
+ $ZFS create $opts $dataset"
+}
+
+#
# Export ZFS storage pool.
# Before exporting the pool, all datasets within the pool should be unmounted.
#
}
#
+# Destroy ZFS storage pool.
+# Destroy the given pool and free up any devices for other use. This command
+# tries to unmount any active datasets before destroying the pool.
+# -f Force any active datasets contained within the pool to be unmounted.
+#
+destroy_zpool() {
+ local facet=$1
+ local poolname=${2:-$(zpool_name $facet)}
+
+ if [[ -n "$poolname" ]]; then
+ do_facet $facet "! $ZPOOL list -H $poolname >/dev/null 2>&1 ||
+ $ZPOOL destroy -f $poolname"
+ fi
+}
+
+#
# Import ZFS storage pool.
# Force importing, even if the pool appears to be potentially active.
#