mirror_zfs/tests/zfs-tests/include/default.cfg.in
Damian Szuberski 63652e1546
Add --enable-asan and --enable-ubsan switches
`configure` now accepts `--enable-asan` and `--enable-ubsan` switches
which results in passing `-fsanitize=address`
and `-fsanitize=undefined`, respectively, to the compiler. Those
flags are enabled in GitHub workflows for ZTS and zloop. Errors
reported by both instrumentations are corrected, except for:

- Memory leak reporting is (temporarily) suppressed. The cost of
  fixing them is relatively high compared to the gains.

- Checksum computing functions in `module/zcommon/zfs_fletcher*`
  have UBSan errors suppressed. It is completely impractical
  to enforce 64-byte payload alignment there due to performance
  impact.

- There's no ASan heap poisoning in `module/zstd/lib/zstd.c`. A custom
  memory allocator is used there rendering that measure
  unfeasible.

- Memory leaks detection has to be suppressed for `cmd/zvol_id`.
  `zvol_id` is run by udev with the help of `ptrace(2)`. Tracing is
  incompatible with memory leaks detection.

Reviewed-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Reviewed-by: George Melikov <mail@gmelikov.ru>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: szubersk <szuberskidamian@gmail.com>
Closes #12928
2022-02-03 14:35:38 -08:00

240 lines
6.2 KiB
Bash

#!/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 2008 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
#
# Copyright (c) 2016 by Delphix. All rights reserved.
# Copyright (c) 2017 Lawrence Livermore National Security, LLC.
#
. $STF_SUITE/include/commands.cfg
# ZFS Directories
export ZEDLET_ETC_DIR=${ZEDLET_ETC_DIR:-@sysconfdir@/zfs/zed.d}
export ZEDLET_LIBEXEC_DIR=${ZEDLET_LIBEXEC_DIR:-@zfsexecdir@/zed.d}
export ZPOOL_SCRIPT_DIR=${ZPOOL_SCRIPT_DIR:-@sysconfdir@/zfs/zpool.d}
export ZPOOL_COMPAT_DIR=${ZPOOL_COMPAT_DIR:-@datadir@/zfs/compatibility.d}
# Define run length constants
export RT_LONG="3"
export RT_MEDIUM="2"
export RT_SHORT="1"
# Define macro for zone test
export ZONE_POOL="zonepool"
export ZONE_CTR="zonectr"
# ensure we're running in the C locale, since
# localised messages may result in test failures
export LC_ALL="C"
export LANG="C"
#
# pattern to ignore from 'zpool list'.
#
export NO_POOLS="no pools available"
# pattern to ignore from 'zfs list'.
export NO_DATASETS="no datasets available"
# Default directory used for test files
# NOTE: remove trailing "/", some functions rely on this to do pattern matching
export TEST_BASE_DIR="$(dirname ${FILEDIR:-/var/tmp}/.)"
# Default to compression ON
export COMPRESSION_PROP=on
# Default to using the checksum
export CHECKSUM_PROP=on
# some common variables used by test scripts :
export FIO_SCRIPTS=$STF_SUITE/tests/perf/fio
export PERF_SCRIPTS=$STF_SUITE/tests/perf/scripts
# some test pool names
export TESTPOOL=testpool
export TESTPOOL1=testpool1
export TESTPOOL2=testpool2
export TESTPOOL3=testpool3
export PERFPOOL=perfpool
# some test file system names
export TESTFS=testfs
export TESTFS1=testfs1
export TESTFS2=testfs2
export TESTFS3=testfs3
# some test directory names
export TESTDIR=${TEST_BASE_DIR%%/}/testdir
export TESTDIR0=${TEST_BASE_DIR%%/}/testdir0
export TESTDIR1=${TEST_BASE_DIR%%/}/testdir1
export TESTDIR2=${TEST_BASE_DIR%%/}/testdir2
# some test sub file system names
export TESTSUBFS=subfs
export TESTSUBFS1=subfs1
export TESTSUBFS2=subfs2
# some temp files
export TEMPFILE=${TEST_BASE_DIR%%/}/tempfile$$
export TEMPFILE0=${TEST_BASE_DIR%%/}/tempfile0$$
export TEMPFILE1=${TEST_BASE_DIR%%/}/tempfile1$$
export TEMPFILE2=${TEST_BASE_DIR%%/}/tempfile2$$
export ZFSROOT=
export TESTSNAP=testsnap
export TESTSNAP1=testsnap1
export TESTSNAP2=testsnap2
export TESTCLONE=testclone
export TESTCLONE1=testclone1
export TESTCLONE2=testclone2
export TESTCLCT=testclct
export TESTCTR=testctr
export TESTCTR1=testctr1
export TESTCTR2=testctr2
export TESTVOL=testvol
export TESTVOL1=testvol1
export TESTVOL2=testvol2
export TESTFILE0=testfile0
export TESTFILE1=testfile1
export TESTFILE2=testfile2
export TESTBKMARK=testbkmark
export LONGPNAME="poolname50charslong_012345678901234567890123456789"
export LONGFSNAME="fsysname50charslong_012345678901234567890123456789"
export SNAPFS="$TESTPOOL/$TESTFS@$TESTSNAP"
export SNAPFS1="$TESTPOOL/$TESTVOL@$TESTSNAP"
export VOLSIZE=150m
export BIGVOLSIZE=1eb
# Default to limit disks to be checked
export MAX_FINDDISKSNUM=6
# Default minimum size for file based vdevs in the test suite
export MINVDEVSIZE=$((256 * 1024 * 1024))
# Minimum vdev size possible as defined in the OS
export SPA_MINDEVSIZE=$((64 * 1024 * 1024))
# For iscsi target support
export ISCSITGTFILE=/tmp/iscsitgt_file
export ISCSITGT_FMRI=svc:/system/iscsitgt:default
export ZFS_VERSION=5
export ZFS_ALL_VERSIONS="1 2 3 4 5"
for i in $ZFS_ALL_VERSIONS; do
eval 'export ZFS_VERSION_$i="v${i}-fs"'
done
export MAX_PARTITIONS=8
if [ "@ASAN_ENABLED@" = "yes" ]; then
export ASAN_OPTIONS=abort_on_error=true:halt_on_error=true:allocator_may_return_null=true:disable_coredump=false:detect_stack_use_after_return=true
# TODO
# disable memory leaks detection
# there are quite many of them and they are not as
# destructive to CLI programs as they are to daemons
export ASAN_OPTIONS="$ASAN_OPTIONS:detect_leaks=false"
fi
if [ "@UBSAN_ENABLED@" = "yes" ]; then
export UBSAN_OPTIONS=abort_on_error=true:halt_on_error=true:print_stacktrace=true
fi
case $(uname -o) in
GNU/Linux)
unpack_opts="--sparse -xf"
pack_opts="--sparse -cf"
verbose=" -v"
unpack_preserve=" -xpf"
pack_preserve=" -cpf"
ZVOL_DEVDIR="/dev/zvol"
ZVOL_RDEVDIR="/dev/zvol"
DEV_DSKDIR="/dev"
DEV_RDSKDIR="/dev"
DEV_MPATHDIR="/dev/mapper"
ZEDLET_DIR="/var/tmp/zed"
ZED_LOG="$ZEDLET_DIR/zed.log"
ZED_DEBUG_LOG="$ZEDLET_DIR/zed.debug.log"
VDEVID_CONF="$ZEDLET_DIR/vdev_id.conf"
VDEVID_CONF_ETC="/etc/zfs/vdev_id.conf"
NEWFS_DEFAULT_FS="ext2"
SLICE_PREFIX=""
;;
FreeBSD)
unpack_opts="xv"
pack_opts="cf"
verbose="v"
unpack_preserve="xpf"
pack_preserve="cpf"
ZVOL_DEVDIR="/dev/zvol"
ZVOL_RDEVDIR="/dev/zvol"
DEV_DSKDIR="/dev"
DEV_RDSKDIR="/dev"
DEV_MPATHDIR="/dev/multipath"
NEWFS_DEFAULT_FS="ufs"
SLICE_PREFIX="p"
;;
illumos)
export AUTO_SNAP=$(svcs -a | \
awk '/auto-snapshot/ && /online/ { print $3 }')
# finally, if we're running in a local zone
# we take some additional actions
if [ "$(zonename 2>/dev/null)" != "global" ]; then
reexport_pool
fi
unpack_opts="xv"
pack_opts="cf"
verbose="v"
unpack_preserve="xpf"
pack_preserve="cpf"
ZVOL_DEVDIR="/dev/zvol/dsk"
ZVOL_RDEVDIR="/dev/zvol/rdsk"
DEV_DSKDIR="/dev/dsk"
DEV_RDSKDIR="/dev/rdsk"
NEWFS_DEFAULT_FS="ufs"
SLICE_PREFIX="s"
;;
esac
export unpack_opts pack_opts verbose unpack_preserve pack_preserve \
ZVOL_DEVDIR ZVOL_RDEVDIR DEV_DSKDIR DEV_RDSKDIR DEV_MPATHDIR \
ZEDLET_DIR ZED_LOG ZED_DEBUG_LOG VDEVID_CONF VDEVID_CONF_ETC \
NEWFS_DEFAULT_FS SLICE_PREFIX