diff --git a/.github/workflows/scripts/generate-summary.sh b/.github/workflows/scripts/generate-summary.sh
index b5d89208a5d8..39ad7ec0d4f9 100755
--- a/.github/workflows/scripts/generate-summary.sh
+++ b/.github/workflows/scripts/generate-summary.sh
@@ -1,60 +1,107 @@
#!/usr/bin/env bash
-# for runtime reasons we split functional testings into N parts
-# - use a define to check for missing tarfiles
-FUNCTIONAL_PARTS="4"
-
-ZTS_REPORT="tests/test-runner/bin/zts-report.py"
-chmod +x $ZTS_REPORT
+######################################################################
+# generate github summary page of all the testings
+######################################################################
function output() {
- echo -e $* >> Summary.md
+ echo -e $* >> "out-$logfile.md"
+}
+
+function outfile() {
+ cat "$1" >> "out-$logfile.md"
+}
+
+function send2github() {
+ test -f "$1" && dd if="$1" bs=999k count=1 >> $GITHUB_STEP_SUMMARY
}
function error() {
output ":bangbang: $* :bangbang:\n"
}
-# this function generates the real summary
-# - expects a logfile "log" in current directory
+# generate summary of one test
function generate() {
# we issued some error already
test ! -s log && return
- # for overview and zts-report
- cat log | grep '^Test' > list
+ ######################################################
+ # input:
+ # - log -> full debug output
+ # - results -> full list with summary in the end
+ ######################################################
+ # output:
+ # - info.txt -> short summary list (zts-report)
+ # - list.txt -> full list, but without debugging
+ # - debug.txt -> full list with debugging info
+ ######################################################
+
+ if [ -s results ]; then
+ cat results | grep '^Test[: ]' > list.txt
+ cat results | grep -v '^Test[: ]' > info.txt
+ else
+ cat log | grep '^Test[: ]' > list.txt
+ ./zts-report.py --no-maybes ./list.txt > info.txt
+ fi
# error details
awk '/\[FAIL\]|\[KILLED\]/{ show=1; print; next; }
- /\[SKIP\]|\[PASS\]/{ show=0; } show' log > err
+ /\[SKIP\]|\[PASS\]/{ show=0; } show' log > debug.txt
- # summary of errors
- if [ -s err ]; then
+ # headline of this summary
+ output "\n## $headline\n"
+
+ if [ -s uname.txt ]; then
output "
"
- $ZTS_REPORT --no-maybes ./list >> Summary.md
+ outfile uname.txt
output "
"
+ fi
- # generate seperate error logfile
- ERRLOGS=$((ERRLOGS+1))
- errfile="err-$ERRLOGS.md"
- echo -e "\n## $headline (debugging)\n" >> $errfile
- echo "Error Listing - with dmesg and dbgmsg
" >> $errfile
- dd if=err bs=999k count=1 >> $errfile
- echo "
" >> $errfile
+ if [ -s info.txt ]; then
+ output ""
+ outfile info.txt
+ output "
"
else
output "All tests passed :thumbsup:"
fi
- output "Full Listing
"
- cat list >> Summary.md
- output "
"
+ if [ -s dmesg-prerun.txt ]; then
+ output "Dmesg - systemstart
"
+ outfile dmesg-prerun.txt
+ output "
"
+ fi
+
+ if [ -s dmesg-module-load.txt ]; then
+ output "Dmesg - module loading
"
+ outfile dmesg-module-load.txt
+ output "
"
+ fi
+
+ if [ -s make-stderr.txt ]; then
+ output "Stderr of make
"
+ outfile make-stderr.txt
+ output "
"
+ fi
+
+ if [ -s list.txt ]; then
+ output "List of all tests
"
+ outfile list.txt
+ output "
"
+ fi
+
+ if [ -s debug.txt ]; then
+ output "Debug list with dmesg and dbgmsg
"
+ outfile debug.txt
+ output "
"
+ fi
# remove tmp files
- rm -f err list log
+ rm -f log results *.txt
+ logfile=$((logfile+1))
}
# check tarfiles and untar
-function check_tarfile() {
+function my_untar() {
if [ -f "$1" ]; then
tar xf "$1" || error "Tarfile $1 returns some error"
else
@@ -62,58 +109,71 @@ function check_tarfile() {
fi
}
-# check logfile and concatenate test results
-function check_logfile() {
+# check file and copy
+function my_copy() {
if [ -f "$1" ]; then
- cat "$1" >> log
+ cat "$1" >> "$2"
else
- error "Logfile $1 not found"
+ error "File $1 not found"
fi
}
-# sanity
-function summarize_s() {
- headline="$1"
- output "\n## $headline\n"
+# sanity checks on ubuntu runner
+function summarize_sanity() {
+ headline="Sanity Tests Ubuntu $1"
rm -rf testfiles
- check_tarfile "$2/sanity.tar"
- check_logfile "testfiles/log"
+ my_untar "Logs-$1-sanity/sanity.tar"
+ my_copy "testfiles/log" log
generate
}
-# functional
-function summarize_f() {
- headline="$1"
- output "\n## $headline\n"
+# functional on ubuntu runner matrix
+function summarize_functional() {
+ headline="Functional Tests Ubuntu $1"
rm -rf testfiles
- for i in $(seq 1 $FUNCTIONAL_PARTS); do
- tarfile="$2-part$i/part$i.tar"
- check_tarfile "$tarfile"
- check_logfile "testfiles/log"
+ for i in $(seq 1 4); do
+ tarfile="Logs-$1-functional-part$i/part$i.tar"
+ my_untar "$tarfile"
+ my_copy "testfiles/log" log
done
generate
}
+# functional tests via qemu
+function summarize_qemu() {
+ for tarfile in Logs-functional*/qemu-*.tar; do
+ rm -rf current
+ my_untar "$tarfile"
+ osname=`cat osname.txt`
+ headline="Functional Tests: $osname"
+ my_copy "current/log" log
+ my_copy "current/results" results
+ generate
+ done
+}
+
# https://docs.github.com/en/enterprise-server@3.6/actions/using-workflows/workflow-commands-for-github-actions#step-isolation-and-limits
# Job summaries are isolated between steps and each step is restricted to a maximum size of 1MiB.
# [ ] can not show all error findings here
# [x] split files into smaller ones and create additional steps
-ERRLOGS=0
-if [ ! -f Summary/Summary.md ]; then
- # first call, we do the default summary (~500k)
- echo -n > Summary.md
- summarize_s "Sanity Tests Ubuntu 20.04" Logs-20.04-sanity
- summarize_s "Sanity Tests Ubuntu 22.04" Logs-22.04-sanity
- summarize_f "Functional Tests Ubuntu 20.04" Logs-20.04-functional
- summarize_f "Functional Tests Ubuntu 22.04" Logs-22.04-functional
-
- cat Summary.md >> $GITHUB_STEP_SUMMARY
- mkdir -p Summary
- mv *.md Summary
+# first call, generate all summaries
+if [ ! -f out-0.md ]; then
+ # create ./zts-report.py for generate()
+ TEMPLATE="tests/test-runner/bin/zts-report.py.in"
+ cat $TEMPLATE| sed -e 's|@PYTHON_SHEBANG@|python3|' > ./zts-report.py
+ chmod +x ./zts-report.py
+
+ logfile="0"
+ summarize_sanity "20.04"
+ summarize_sanity "22.04"
+ summarize_functional "20.04"
+ summarize_functional "22.04"
+ summarize_qemu
+
+ send2github out-0.md
else
- # here we get, when errors where returned in first call
- test -f Summary/err-$1.md && cat Summary/err-$1.md >> $GITHUB_STEP_SUMMARY
+ send2github out-$1.md
fi
exit 0
diff --git a/.github/workflows/scripts/qemu-1-setup.sh b/.github/workflows/scripts/qemu-1-setup.sh
new file mode 100755
index 000000000000..7b904429ce74
--- /dev/null
+++ b/.github/workflows/scripts/qemu-1-setup.sh
@@ -0,0 +1,30 @@
+#!/usr/bin/env bash
+
+######################################################################
+# 1) setup the action runner to start some qemu instance
+######################################################################
+
+set -eu
+
+# docker isn't needed, free some memory
+sudo systemctl stop docker.socket
+sudo apt-get remove docker-ce-cli docker-ce podman
+
+# remove snapd, not needed
+for x in lxd core20 snapd; do sudo snap remove $x; done
+sudo apt-get remove google-chrome-stable firefox snapd
+
+# only install qemu
+sudo apt-get update
+sudo apt-get install axel cloud-image-utils guestfs-tools virt-manager
+
+# no swap needed
+sudo swapoff -a
+
+# disk usage afterwards
+sudo df -h /
+sudo df -h /mnt
+sudo fstrim -a
+
+# generate ssh keys
+ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -q -N ""
diff --git a/.github/workflows/scripts/qemu-2-start.sh b/.github/workflows/scripts/qemu-2-start.sh
new file mode 100755
index 000000000000..ff46be73baa3
--- /dev/null
+++ b/.github/workflows/scripts/qemu-2-start.sh
@@ -0,0 +1,155 @@
+#!/usr/bin/env bash
+
+######################################################################
+# 2) start qemu with some operating system, init via cloud-init
+######################################################################
+
+OS="$1"
+
+# valid ostypes: virt-install --os-variant list
+OSv=$OS
+
+case "$OS" in
+ almalinux8)
+ OSNAME="AlmaLinux 8"
+ URL="https://repo.almalinux.org/almalinux/8/cloud/x86_64/images/AlmaLinux-8-GenericCloud-latest.x86_64.qcow2"
+ ;;
+ almalinux9)
+ OSNAME="AlmaLinux 9"
+ URL="https://repo.almalinux.org/almalinux/9/cloud/x86_64/images/AlmaLinux-9-GenericCloud-latest.x86_64.qcow2"
+ ;;
+ archlinux)
+ OSNAME="Archlinux"
+ URL="https://geo.mirror.pkgbuild.com/images/latest/Arch-Linux-x86_64-cloudimg.qcow2"
+ ;;
+ centos-stream8)
+ OSNAME="CentOS Stream 8"
+ URL="https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-latest.x86_64.qcow2"
+ ;;
+ centos-stream9)
+ OSNAME="CentOS Stream 9"
+ URL="https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-GenericCloud-9-latest.x86_64.qcow2"
+ ;;
+ debian11)
+ OSNAME="Debian 11"
+ URL="https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-generic-amd64.qcow2"
+ ;;
+ debian12)
+ OSNAME="Debian 12"
+ URL="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2"
+ ;;
+ fedora38)
+ OSNAME="Fedora 38"
+ URL="https://download.fedoraproject.org/pub/fedora/linux/releases/38/Cloud/x86_64/images/Fedora-Cloud-Base-38-1.6.x86_64.qcow2"
+ ;;
+ fedora39)
+ OSNAME="Fedora 39"
+ OSv="fedora38"
+ URL="https://download.fedoraproject.org/pub/fedora/linux/releases/39/Cloud/x86_64/images/Fedora-Cloud-Base-39-1.5.x86_64.qcow2"
+ ;;
+ freebsd13)
+ OSNAME="FreeBSD 13"
+ OSv="freebsd13.0"
+ # URL="https://download.freebsd.org/ftp/snapshots/amd64"
+ # freebsd images don't have clout-init within it! :(
+ # -> workaround: provide own images
+ URL_ZS="https://openzfs.de/freebsd/amd64-freebsd-13.3.qcow2.zst"
+ BASH="/usr/local/bin/bash"
+ ;;
+ freebsd14)
+ OSNAME="FreeBSD 14"
+ OSv="freebsd13.0"
+ URL_ZS="https://openzfs.de/freebsd/amd64-freebsd-14.0.qcow2.zst"
+ BASH="/usr/local/bin/bash"
+ ;;
+ freebsd15)
+ OSNAME="FreeBSD 15"
+ OSv="freebsd13.0"
+ URL_ZS="https://openzfs.de/freebsd/amd64-freebsd-15.0.qcow2.zst"
+ BASH="/usr/local/bin/bash"
+ ;;
+ ubuntu22)
+ OSNAME="Ubuntu 22.04"
+ OSv="ubuntu22.04"
+ URL="https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
+ ;;
+ ubuntu24)
+ OSNAME="Ubuntu 24.04"
+ OSv="ubuntu24.04"
+ URL="https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"
+ ;;
+ *)
+ echo "Wrong value for variable OS!"
+ exit 111
+ ;;
+esac
+
+IMG="/mnt/original.qcow2"
+DISK="/mnt/openzfs.qcow2"
+sudo chown -R $(whoami) /mnt
+
+if [ ! -z "$URL_ZS" ]; then
+ echo "Loading image $URL_ZS ..."
+ axel -q "$URL_ZS" -o "$IMG.zst" || exit 111
+ zstd -d "$IMG.zst" && rm -f "$IMG.zst"
+else
+ echo "Loading image $URL ..."
+ axel -q "$URL" -o "$IMG" || exit 111
+fi
+
+# we use zstd for faster IO on the testing runner
+echo "Converting image ..."
+qemu-img convert -q -f qcow2 -O qcow2 -c -o compression_type=zstd,preallocation=off $IMG $DISK || exit 111
+rm -f $IMG || exit 111
+
+echo "Resizing image to 60GiB ..."
+qemu-img resize -q $DISK 60G || exit 111
+
+PUBKEY=`cat ~/.ssh/id_ed25519.pub`
+cat < /tmp/user-data
+#cloud-config
+
+fqdn: $OS
+
+users:
+- name: root
+ shell: $BASH
+- name: zfs
+ sudo: ALL=(ALL) NOPASSWD:ALL
+ shell: $BASH
+ ssh_authorized_keys:
+ - $PUBKEY
+
+growpart:
+ mode: auto
+ devices: ['/']
+ ignore_growroot_disabled: false
+
+write_files:
+ - path: /tmp/runner-init.sh
+ permissions: '0755'
+ content: |
+ #!/usr/bin/env bash
+
+ cd \$HOME
+ exec 2>stderr-init.log
+ echo "$OSNAME" > /var/tmp/osname.txt
+
+runcmd:
+ - sudo -u zfs /tmp/runner-init.sh
+EOF
+
+# we could extend this with more virtual disks for example /TR
+sudo virt-install \
+ --os-variant $OSv \
+ --name "openzfs" \
+ --cpu host-passthrough \
+ --vcpus=4,sockets=1 \
+ --memory $((1024*12)) \
+ --graphics none \
+ --network bridge=virbr0,model=virtio \
+ --cloud-init user-data=/tmp/user-data \
+ --disk $DISK,format=qcow2,bus=virtio \
+ --import --noautoconsole
+
+sudo rm -f /tmp/user-data
diff --git a/.github/workflows/scripts/qemu-3-deps.sh b/.github/workflows/scripts/qemu-3-deps.sh
new file mode 100755
index 000000000000..c6fab0f74855
--- /dev/null
+++ b/.github/workflows/scripts/qemu-3-deps.sh
@@ -0,0 +1,179 @@
+#!/usr/bin/env bash
+
+######################################################################
+# 3) install dependencies for compiling and loading
+######################################################################
+
+set -eu
+
+function archlinux() {
+ echo "##[group]Running pacman -Syu"
+ sudo pacman -Syu --noconfirm
+ echo "##[endgroup]"
+
+ echo "##[group]Install Development Tools"
+ sudo pacman -Sy --noconfirm base-devel bc cpio dkms fakeroot fio \
+ inetutils linux linux-headers lsscsi nfs-utils parted pax perf \
+ python-packaging python-setuptools ksh samba sysstat rng-tools \
+ rsync wget
+ echo "##[endgroup]"
+}
+
+function debian() {
+ export DEBIAN_FRONTEND=noninteractive
+
+ echo "##[group]Running apt-get update+upgrade"
+ sudo apt-get update -y
+ sudo apt-get upgrade -y
+ echo "##[endgroup]"
+
+ echo "##[group]Install Development Tools"
+ yes | sudo apt-get install -y build-essential autoconf libtool \
+ libtool-bin gdb lcov git alien fakeroot wget curl bc fio acl \
+ sysstat lsscsi parted gdebi attr dbench watchdog ksh nfs-kernel-server \
+ samba rng-tools dkms rsync linux-headers-$(uname -r) \
+ zlib1g-dev uuid-dev libblkid-dev libselinux-dev \
+ xfslibs-dev libattr1-dev libacl1-dev libudev-dev libdevmapper-dev \
+ libssl-dev libaio-dev libffi-dev libelf-dev libmount-dev \
+ libpam0g-dev pamtester python3-dev python3-setuptools python3 \
+ python3-dev python3-setuptools python3-cffi libcurl4-openssl-dev \
+ python3-packaging python3-distlib
+ echo "##[endgroup]"
+
+ echo "##[group]starting services"
+ sudo -E service start nfs-server
+
+ # Debian
+ sudo -E systemctl start samba || true
+ # Ubuntu
+ sudo -E service smbd start || true
+ echo "##[endgroup]"
+
+}
+
+function freebsd() {
+ export ASSUME_ALWAYS_YES="YES"
+
+ echo "##[group]Install Development Tools"
+ sudo pkg install -y autoconf automake autotools base64 fio gdb git gmake \
+ gsed python python3 gettext gettext-runtime checkbashisms lcov libtool \
+ lscpu ksh93 pamtester pamtester rsync
+
+ sudo pkg install -xy \
+ '^samba4[[:digit:]]+$' \
+ '^py3[[:digit:]]+-cffi$' \
+ '^py3[[:digit:]]+-sysctl$' \
+ '^py3[[:digit:]]+-packaging$'
+
+ echo "##[endgroup]"
+
+ # the image has /usr/src already
+ #echo "##[group]Install Kernel Headers"
+ #VERSION=$(freebsd-version -r)
+ #sudo mkdir -p /usr/src
+ #sudo chown -R $(whoami) /usr/src
+ #git clone --depth=1 -b releng/${VERSION%%-*} https://github.com/freebsd/freebsd-src /usr/src ||
+ #git clone --depth=1 -b stable/${VERSION%%.*} https://github.com/freebsd/freebsd-src /usr/src ||
+ #git clone --depth=1 -b main https://github.com/freebsd/freebsd-src /usr/src
+ #echo "##[endgroup]"
+}
+
+function rhel() {
+ echo "##[group]Running dnf update"
+ sudo dnf update -y
+ echo "##[endgroup]"
+
+ echo "##[group]Install Development Tools"
+ sudo dnf group install -y "Development Tools"
+ sudo dnf install -y libtool rpm-build libtirpc-devel libblkid-devel \
+ libuuid-devel libudev-devel openssl-devel zlib-devel libaio-devel \
+ libattr-devel elfutils-libelf-devel python3 python3-devel \
+ python3-setuptools python3-cffi libffi-devel git ncompress \
+ libcurl-devel python3-packaging systemd
+ sudo dnf install -y kernel-devel-$(uname -r)
+ echo "##[endgroup]"
+
+ echo "##[group]Install utilities for ZTS"
+ sudo dnf install -y acl ksh bc bzip2 fio sysstat mdadm lsscsi parted attr \
+ nfs-utils samba rng-tools perf rsync dbench pamtester
+ echo "##[endgroup]"
+
+ echo "##[group]starting services"
+ sudo -E systemctl enable nfs-server
+ sudo -E systemctl enable smb
+
+
+ sudo -E systemctl start nfs-server
+ sudo -E systemctl start smb
+
+ sudo -E service nfs-server start
+ sudo -E service smb start
+ sudo -E service nfs-server status
+ sudo -E service smb status
+ echo "##[endgroup]"
+}
+
+case "$1" in
+ almalinux8|centos-stream8)
+ echo "##[group]Enable epel and powertools repositories"
+ sudo dnf config-manager -y --set-enabled powertools
+ sudo dnf install -y epel-release
+ echo "##[endgroup]"
+ rhel
+ ;;
+ almalinux9|centos-stream9)
+ echo "##[group]Enable epel and crb repositories"
+ sudo dnf config-manager -y --set-enabled crb
+ sudo dnf install -y epel-release
+
+ sudo dnf -y install kernel-abi-stablelists
+
+
+ # To minimize EPEL leakage, disable by default...
+ sudo -E sed -e "s/enabled=1/enabled=0/g" -i /etc/yum.repos.d/epel.repo
+
+ # Required development tools.
+ sudo -E yum -y --skip-broken install gcc make autoconf libtool gdb \
+ kernel-rpm-macros kernel-abi-whitelists
+
+ # Required utilities.
+ sudo -E yum -y --skip-broken install --enablerepo=epel git rpm-build \
+ wget curl bc fio acl sysstat mdadm lsscsi parted attr dbench watchdog \
+ ksh nfs-utils samba rng-tools dkms pamtester ncompress rsync
+
+ # Required development libraries
+ sudo -E yum -y --skip-broken install kernel-devel \
+ zlib-devel libuuid-devel libblkid-devel libselinux-devel \
+ xfsprogs-devel libattr-devel libacl-devel libudev-devel \
+ openssl-devel libargon2-devel libffi-devel pam-devel libaio-devel libcurl-devel
+
+ sudo -E yum -y --skip-broken install --enablerepo=powertools \
+ python3-packaging rpcgen
+
+ echo "##[endgroup]"
+ rhel
+ ;;
+ archlinux)
+ archlinux
+ ;;
+ debian*)
+ debian
+ echo "##[group]Install linux-perf"
+ sudo apt-get install -yq linux-perf
+ echo "##[endgroup]"
+ ;;
+ fedora*)
+ rhel
+ ;;
+ freebsd*)
+ freebsd
+ ;;
+ ubuntu*)
+ debian
+ echo "##[group]Install linux-tools-common"
+ sudo apt-get install -yq linux-tools-common libtirpc-dev
+ echo "##[endgroup]"
+ ;;
+esac
+
+sudo poweroff
diff --git a/.github/workflows/scripts/qemu-4-build.sh b/.github/workflows/scripts/qemu-4-build.sh
new file mode 100755
index 000000000000..b713be5e4f4e
--- /dev/null
+++ b/.github/workflows/scripts/qemu-4-build.sh
@@ -0,0 +1,85 @@
+#!/usr/bin/env bash
+
+######################################################################
+# 4) configure and build openzfs modules
+######################################################################
+
+set -eu
+cd $HOME/zfs
+
+function freebsd() {
+ echo "##[group]Autogen.sh"
+ MAKE="gmake" ./autogen.sh
+ echo "##[endgroup]"
+
+ echo "##[group]Configure"
+ MAKE="gmake" ./configure \
+ --prefix=/usr/local \
+ --with-libintl-prefix=/usr/local \
+ --enable-pyzfs \
+ --enable-debug \
+ --enable-debuginfo
+ echo "##[endgroup]"
+
+ echo "##[group]Build"
+ gmake -j`sysctl -n hw.ncpu` 2>/var/tmp/make-stderr.txt
+ echo "##[endgroup]"
+
+ echo "##[group]Install"
+ sudo gmake install 2>>/var/tmp/make-stderr.txt
+ echo "##[endgroup]"
+}
+
+function linux() {
+ echo "##[group]Autogen.sh"
+ ./autogen.sh
+ echo "##[endgroup]"
+
+ echo "##[group]Configure"
+ ./configure \
+ --prefix=/usr \
+ --enable-pyzfs \
+ --enable-debug \
+ --enable-debuginfo
+ echo "##[endgroup]"
+
+ echo "##[group]Build"
+ make -j$(nproc) 2>/var/tmp/make-stderr.txt
+ echo "##[endgroup]"
+
+ echo "##[group]Install"
+ sudo make install 2>>/var/tmp/make-stderr.txt
+find /usr/lib/python3.9/site-packages/libzfs_core/
+ echo "##[endgroup]"
+}
+
+function rhel {
+ echo "##[group]Autogen.sh"
+ ./autogen.sh
+ echo "##[endgroup]"
+
+ echo "##[group]Configure"
+ ./configure --enable-debug --enable-debuginfo --with-spec=redhat
+ echo "##[endgroup]"
+
+ echo "##[group]Build"
+ make -j$(nproc) pkg-kmod pkg-utils 2>/var/tmp/make-stderr.txt
+ echo "##[endgroup]"
+
+ echo "##[group]Install"
+ sudo yum -y localinstall $(ls *.rpm | grep -v src.rpm)
+ echo "##[endgroup]"
+}
+
+export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin"
+case "$1" in
+ freebsd*)
+ freebsd
+ ;;
+ alma*)
+ rhel
+ ;;
+ *)
+ linux
+ ;;
+esac
diff --git a/.github/workflows/scripts/qemu-5-load.sh b/.github/workflows/scripts/qemu-5-load.sh
new file mode 100755
index 000000000000..1676423f0a8f
--- /dev/null
+++ b/.github/workflows/scripts/qemu-5-load.sh
@@ -0,0 +1,63 @@
+#!/usr/bin/env bash
+
+######################################################################
+# 5) load openzfs modules
+######################################################################
+
+set -eu
+cd $HOME/zfs
+
+function freebsd() {
+ echo "##[group]Load modules"
+ # when freebsd zfs is loaded, unload this one
+ kldstat -n zfs 2>/dev/null && sudo kldunload zfs
+ sudo dmesg -c > /var/tmp/dmesg-prerun.txt
+ sudo -E ./scripts/zfs.sh
+ sudo dmesg
+ sudo dmesg -c > /var/tmp/dmesg-module-load.txt
+ echo "Loaded module: "
+ sudo kldstat -n openzfs
+ uname -a > /var/tmp/uname.txt
+ echo "##[endgroup]"
+}
+
+function linux_forceload() {
+ echo "Need to force the module loading!"
+ # -f tells modprobe to ignore wrong version numbers
+ sudo modprobe -v -f spl || echo "!! Loading module spl is failing !!"
+ sudo modprobe -v -f zfs || echo "!! Loading module zfs is failing !!"
+}
+
+function linux() {
+ echo "##[group]Load modules"
+ sudo dmesg -c > /var/tmp/dmesg-prerun.txt
+ sudo -E ./scripts/zfs.sh
+ test -d /proc/spl/kstat/zfs || linux_forceload
+ sudo dmesg
+ sudo dmesg -c > /var/tmp/dmesg-module-load.txt
+ uname -a > /var/tmp/uname.txt
+ echo "##[endgroup]"
+}
+
+function rhel() {
+ echo "##[group]Load modules"
+
+ sudo -E modprobe zfs
+ sudo dmesg -c > /var/tmp/dmesg-module-load.txt
+ uname -a > /var/tmp/uname.txt
+ echo "##[endgroup]"
+
+}
+
+export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin"
+case "$1" in
+ freebsd*)
+ freebsd
+ ;;
+ alma*)
+ rhel
+ ;;
+ *)
+ linux
+ ;;
+esac
diff --git a/.github/workflows/scripts/qemu-6-tests.sh b/.github/workflows/scripts/qemu-6-tests.sh
new file mode 100755
index 000000000000..fee67c83344e
--- /dev/null
+++ b/.github/workflows/scripts/qemu-6-tests.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+######################################################################
+# 6) configure and build openzfs modules
+######################################################################
+
+set -eu
+set -o pipefail
+cd $HOME/zfs
+
+#OPTS="-T casenorm"
+OPTS="-T functional"
+OPTS="-T pyzfs"
+
+sudo cat /usr/share/zfs/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh
+
+sudo /usr/bin/python3.9 -m unittest --verbose libzfs_core.test.test_libzfs_core.ZFSTest.test_recv_with_heal
+
+case "$1" in
+ freebsd*)
+ /usr/local/share/zfs/zfs-tests.sh -vKR -s 3G $OPTS \
+ | scripts/zfs-tests-color.sh
+ ;;
+ *)
+ /usr/share/zfs/zfs-tests.sh -vKR -s 3G $OPTS \
+ | scripts/zfs-tests-color.sh
+ ;;
+esac
diff --git a/.github/workflows/scripts/setup-dependencies.sh b/.github/workflows/scripts/setup-dependencies.sh
index b40f9290f914..57e51dcaed70 100755
--- a/.github/workflows/scripts/setup-dependencies.sh
+++ b/.github/workflows/scripts/setup-dependencies.sh
@@ -13,7 +13,7 @@ function prerun() {
sudo apt upgrade
sudo xargs --arg-file=.github/workflows/build-dependencies.txt apt-get install -qq
sudo apt-get clean
- sudo dmesg -c > /var/tmp/dmesg-prerun
+ sudo dmesg -c > /var/tmp/dmesg-prerun.txt
echo "::endgroup::"
}
@@ -47,7 +47,7 @@ function mod_install() {
sudo depmod -a
sudo modprobe zfs
sudo dmesg
- sudo dmesg -c > /var/tmp/dmesg-module-load
+ sudo dmesg -c > /var/tmp/dmesg-module-load.txt
echo "::endgroup::"
echo "::group::Report CPU information"
diff --git a/.github/workflows/scripts/setup-functional.sh b/.github/workflows/scripts/setup-functional.sh
index 08c4d872abdf..efeb1e2852ac 100755
--- a/.github/workflows/scripts/setup-functional.sh
+++ b/.github/workflows/scripts/setup-functional.sh
@@ -6,15 +6,15 @@ TDIR="/usr/share/zfs/zfs-tests/tests/functional"
echo -n "TODO="
case "$1" in
part1)
- # ~1h 20m
+ # ~1h 10m
echo "cli_root"
;;
part2)
- # ~1h
+ # ~1h 30m
ls $TDIR|grep '^[a-m]'|grep -v "cli_root"|xargs|tr -s ' ' ','
;;
part3)
- # ~1h
+ # ~40m
ls $TDIR|grep '^[n-qs-z]'|xargs|tr -s ' ' ','
;;
part4)
diff --git a/.github/workflows/zfs-linux.yml b/.github/workflows/zfs-linux.yml
index e6b705c86055..32fb5609a642 100644
--- a/.github/workflows/zfs-linux.yml
+++ b/.github/workflows/zfs-linux.yml
@@ -6,59 +6,182 @@ on:
jobs:
- build:
- name: Build
+# build:
+# name: Build
+# strategy:
+# fail-fast: false
+# matrix:
+# os: [20.04]
+# runs-on: ubuntu-${{ matrix.os }}
+# steps:
+# - uses: actions/checkout@v4
+# with:
+# ref: ${{ github.event.pull_request.head.sha }}
+# - name: Build modules
+# run: .github/workflows/scripts/setup-dependencies.sh build
+# - name: Prepare modules upload
+# run: tar czf modules-${{ matrix.os }}.tgz *.deb .github tests/test-runner tests/ImageOS.txt
+# - uses: actions/upload-artifact@v4
+# with:
+# name: modules-${{ matrix.os }}
+# path: modules-${{ matrix.os }}.tgz
+# retention-days: 14
+#
+# tests:
+# name: Tests
+# strategy:
+# fail-fast: false
+# matrix:
+# os: [20.04]
+# needs: build
+# uses: ./.github/workflows/zfs-linux-tests.yml
+# with:
+# os: ${{ matrix.os }}
+
+ qemu-vm:
+ name: QEMU
strategy:
fail-fast: false
matrix:
- os: [20.04, 22.04]
- runs-on: ubuntu-${{ matrix.os }}
+# os: [almalinux8, almalinux9, archlinux, centos-stream8, centos-stream9, fedora38, fedora39, debian11, debian12, freebsd13, freebsd14, freebsd15, ubuntu22, ubuntu24]
+ os: [almalinux9]
+
+ runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- - name: Build modules
- run: .github/workflows/scripts/setup-dependencies.sh build
- - name: Prepare modules upload
- run: tar czf modules-${{ matrix.os }}.tgz *.deb .github tests/test-runner tests/ImageOS.txt
+ - name: Setup QEMU
+ run: .github/workflows/scripts/qemu-1-setup.sh
+ - name: Start QEMU machine
+ run: .github/workflows/scripts/qemu-2-start.sh ${{ matrix.os }}
+ - name: Install dependencies in QEMU machine
+ timeout-minutes: 15
+ run: |
+ echo "Install dependencies in QEMU machine"
+ echo "StrictHostKeyChecking no" >> $HOME/.ssh/config
+ echo "ConnectTimeout 1" >> $HOME/.ssh/config
+ while pidof /usr/bin/qemu-system-x86_64 >/dev/null; do
+ sleep 1
+ IP=`arp | grep "^192.168.122."| cut -d' ' -f1`
+ test -z "$IP" && continue
+ ssh 2>/dev/null zfs@$IP "uname -a" && break
+ done
+ echo IP=$IP >> $GITHUB_ENV
+ scp .github/workflows/scripts/qemu-3-deps.sh zfs@$IP:qemu-3-deps.sh
+ ssh zfs@$IP '$HOME/qemu-3-deps.sh' ${{ matrix.os }} && true
+ # restart vm with new kernel and so on
+ while pidof /usr/bin/qemu-system-x86_64 >/dev/null; do sleep 5; done
+ sudo virsh start openzfs
+ sleep 5
+ - name: Build modules in QEMU machine
+ timeout-minutes: 30
+ run: |
+ echo "Build modules in QEMU machine"
+ while pidof /usr/bin/qemu-system-x86_64 >/dev/null; do
+ sleep 1
+ ssh 2>/dev/null zfs@${{ env.IP }} "uname -a" && break
+ done
+ rsync -ar $HOME/work/zfs/zfs zfs@${{ env.IP }}:./
+ ssh zfs@${{ env.IP }} '$HOME/zfs/.github/workflows/scripts/qemu-4-build.sh' ${{ matrix.os }}
+ - name: Load modules in QEMU machine
+ timeout-minutes: 2
+ run: |
+ ssh zfs@${{ env.IP }} '$HOME/zfs/.github/workflows/scripts/qemu-5-load.sh' ${{ matrix.os }}
+ - name: Run tests in QEMU machine
+ timeout-minutes: 330
+ run: |
+ ssh zfs@${{ env.IP }} '$HOME/zfs/.github/workflows/scripts/qemu-6-tests.sh' ${{ matrix.os }}
+ - name: Prepare artifacts
+ if: success() || failure()
+ run: |
+ RESPATH="/var/tmp/test_results"
+ rsync -arL zfs@${{ env.IP }}:$RESPATH/current $RESPATH
+ scp zfs@$IP:"/var/tmp/*.txt" /var/tmp
+ cat $RESPATH/current/log
+ cp -f /var/tmp/*.txt $RESPATH
+ tar cf qemu-${{ matrix.os }}.tar -C $RESPATH -h current uname.txt \
+ osname.txt dmesg-prerun.txt dmesg-module-load.txt make-stderr.txt
- uses: actions/upload-artifact@v4
+ if: success() || failure()
with:
- name: modules-${{ matrix.os }}
- path: modules-${{ matrix.os }}.tgz
- retention-days: 14
-
- testings:
- name: Testing
- strategy:
- fail-fast: false
- matrix:
- os: [20.04, 22.04]
- needs: build
- uses: ./.github/workflows/zfs-linux-tests.yml
- with:
- os: ${{ matrix.os }}
+ name: Logs-functional-${{ matrix.os }}
+ path: qemu-${{ matrix.os }}.tar
+ if-no-files-found: ignore
cleanup:
if: always()
name: Cleanup
runs-on: ubuntu-22.04
- needs: testings
+# needs: [ qemu-vm, tests ]
+ needs: [ qemu-vm ]
+
steps:
+ - uses: actions/checkout@v4
+ with:
+ ref: ${{ github.event.pull_request.head.sha }}
- uses: actions/download-artifact@v4
- name: Generating summary
- run: |
- tar xzf modules-22.04/modules-22.04.tgz .github tests
- .github/workflows/scripts/generate-summary.sh
- # up to 4 steps, each can have 1 MiB output (for debugging log files)
- - name: Summary for errors #1
+ run: .github/workflows/scripts/generate-summary.sh
+ - name: Generating summary...
run: .github/workflows/scripts/generate-summary.sh 1
- - name: Summary for errors #2
+ - name: Generating summary...
run: .github/workflows/scripts/generate-summary.sh 2
- - name: Summary for errors #3
+ - name: Generating summary...
run: .github/workflows/scripts/generate-summary.sh 3
- - name: Summary for errors #4
+ - name: Generating summary...
run: .github/workflows/scripts/generate-summary.sh 4
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 5
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 6
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 7
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 8
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 9
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 10
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 11
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 12
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 13
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 14
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 15
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 16
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 17
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 18
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 19
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 20
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 21
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 22
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 23
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 24
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 25
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 26
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 27
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 28
+ - name: Generating summary...
+ run: .github/workflows/scripts/generate-summary.sh 29
- uses: actions/upload-artifact@v4
with:
name: Summary Files
- path: Summary/
+ path: out-*
diff --git a/tests/runfiles/common.run b/tests/runfiles/common.run
index 558cd425afd8..08229f3c4c11 100644
--- a/tests/runfiles/common.run
+++ b/tests/runfiles/common.run
@@ -28,1008 +28,10 @@ failsafe = callbacks/zfs_failsafe
outputdir = /var/tmp/test_results
tags = ['functional']
-[tests/functional/acl/off]
-tests = ['dosmode', 'posixmode']
-tags = ['functional', 'acl']
-
-[tests/functional/alloc_class]
-tests = ['alloc_class_001_pos', 'alloc_class_002_neg', 'alloc_class_003_pos',
- 'alloc_class_004_pos', 'alloc_class_005_pos', 'alloc_class_006_pos',
- 'alloc_class_007_pos', 'alloc_class_008_pos', 'alloc_class_009_pos',
- 'alloc_class_010_pos', 'alloc_class_011_neg', 'alloc_class_012_pos',
- 'alloc_class_013_pos', 'alloc_class_014_neg', 'alloc_class_015_pos']
-tags = ['functional', 'alloc_class']
-
-[tests/functional/append]
-tests = ['file_append', 'threadsappend_001_pos']
-tags = ['functional', 'append']
-
-[tests/functional/arc]
-tests = ['dbufstats_001_pos', 'dbufstats_002_pos', 'dbufstats_003_pos',
- 'arcstats_runtime_tuning']
-tags = ['functional', 'arc']
-
-[tests/functional/atime]
-tests = ['atime_001_pos', 'atime_002_neg', 'root_atime_off', 'root_atime_on']
-tags = ['functional', 'atime']
-
-[tests/functional/bclone]
-tests = ['bclone_crossfs_corner_cases_limited',
- 'bclone_crossfs_data',
- 'bclone_crossfs_embedded',
- 'bclone_crossfs_hole',
- 'bclone_diffprops_all',
- 'bclone_diffprops_checksum',
- 'bclone_diffprops_compress',
- 'bclone_diffprops_copies',
- 'bclone_diffprops_recordsize',
- 'bclone_prop_sync',
- 'bclone_samefs_corner_cases_limited',
- 'bclone_samefs_data',
- 'bclone_samefs_embedded',
- 'bclone_samefs_hole']
-tags = ['functional', 'bclone']
-timeout = 7200
-
-[tests/functional/block_cloning]
-tests = ['block_cloning_clone_mmap_cached',
- 'block_cloning_copyfilerange',
- 'block_cloning_copyfilerange_partial',
- 'block_cloning_copyfilerange_fallback',
- 'block_cloning_disabled_copyfilerange',
- 'block_cloning_copyfilerange_cross_dataset',
- 'block_cloning_cross_enc_dataset',
- 'block_cloning_copyfilerange_fallback_same_txg',
- 'block_cloning_replay', 'block_cloning_replay_encrypted',
- 'block_cloning_lwb_buffer_overflow', 'block_cloning_clone_mmap_write']
-tags = ['functional', 'block_cloning']
-
-[tests/functional/bootfs]
-tests = ['bootfs_001_pos', 'bootfs_002_neg', 'bootfs_003_pos',
- 'bootfs_004_neg', 'bootfs_005_neg', 'bootfs_006_pos', 'bootfs_007_pos',
- 'bootfs_008_pos']
-tags = ['functional', 'bootfs']
-
-[tests/functional/btree]
-tests = ['btree_positive', 'btree_negative']
-tags = ['functional', 'btree']
-pre =
-post =
-
-[tests/functional/cache]
-tests = ['cache_001_pos', 'cache_002_pos', 'cache_003_pos', 'cache_004_neg',
- 'cache_005_neg', 'cache_006_pos', 'cache_007_neg', 'cache_008_neg',
- 'cache_009_pos', 'cache_010_pos', 'cache_011_pos', 'cache_012_pos']
-tags = ['functional', 'cache']
-
-[tests/functional/cachefile]
-tests = ['cachefile_001_pos', 'cachefile_002_pos', 'cachefile_003_pos',
- 'cachefile_004_pos']
-tags = ['functional', 'cachefile']
-
-[tests/functional/casenorm]
-tests = ['case_all_values', 'norm_all_values', 'mixed_create_failure',
- 'sensitive_none_lookup', 'sensitive_none_delete',
- 'sensitive_formd_lookup', 'sensitive_formd_delete',
- 'insensitive_none_lookup', 'insensitive_none_delete',
- 'insensitive_formd_lookup', 'insensitive_formd_delete',
- 'mixed_none_lookup', 'mixed_none_lookup_ci', 'mixed_none_delete',
- 'mixed_formd_lookup', 'mixed_formd_lookup_ci', 'mixed_formd_delete']
-tags = ['functional', 'casenorm']
-
-[tests/functional/channel_program/lua_core]
-tests = ['tst.args_to_lua', 'tst.divide_by_zero', 'tst.exists',
- 'tst.integer_illegal', 'tst.integer_overflow', 'tst.language_functions_neg',
- 'tst.language_functions_pos', 'tst.large_prog', 'tst.libraries',
- 'tst.memory_limit', 'tst.nested_neg', 'tst.nested_pos', 'tst.nvlist_to_lua',
- 'tst.recursive_neg', 'tst.recursive_pos', 'tst.return_large',
- 'tst.return_nvlist_neg', 'tst.return_nvlist_pos',
- 'tst.return_recursive_table', 'tst.stack_gsub', 'tst.timeout']
-tags = ['functional', 'channel_program', 'lua_core']
-
-[tests/functional/channel_program/synctask_core]
-tests = ['tst.destroy_fs', 'tst.destroy_snap', 'tst.get_count_and_limit',
- 'tst.get_index_props', 'tst.get_mountpoint', 'tst.get_neg',
- 'tst.get_number_props', 'tst.get_string_props', 'tst.get_type',
- 'tst.get_userquota', 'tst.get_written', 'tst.inherit', 'tst.list_bookmarks',
- 'tst.list_children', 'tst.list_clones', 'tst.list_holds',
- 'tst.list_snapshots', 'tst.list_system_props',
- 'tst.list_user_props', 'tst.parse_args_neg','tst.promote_conflict',
- 'tst.promote_multiple', 'tst.promote_simple', 'tst.rollback_mult',
- 'tst.rollback_one', 'tst.set_props', 'tst.snapshot_destroy', 'tst.snapshot_neg',
- 'tst.snapshot_recursive', 'tst.snapshot_rename', 'tst.snapshot_simple',
- 'tst.bookmark.create', 'tst.bookmark.copy',
- 'tst.terminate_by_signal'
- ]
-tags = ['functional', 'channel_program', 'synctask_core']
-
-[tests/functional/checksum]
-tests = ['run_edonr_test', 'run_sha2_test', 'run_skein_test', 'run_blake3_test',
- 'filetest_001_pos', 'filetest_002_pos']
-tags = ['functional', 'checksum']
-
-[tests/functional/clean_mirror]
-tests = [ 'clean_mirror_001_pos', 'clean_mirror_002_pos',
- 'clean_mirror_003_pos', 'clean_mirror_004_pos']
-tags = ['functional', 'clean_mirror']
-
-[tests/functional/cli_root/zinject]
-tests = ['zinject_args']
-pre =
-post =
-tags = ['functional', 'cli_root', 'zinject']
-
-[tests/functional/cli_root/zdb]
-tests = ['zdb_002_pos', 'zdb_003_pos', 'zdb_004_pos', 'zdb_005_pos',
- 'zdb_006_pos', 'zdb_args_neg', 'zdb_args_pos',
- 'zdb_block_size_histogram', 'zdb_checksum', 'zdb_decompress',
- 'zdb_display_block', 'zdb_encrypted', 'zdb_label_checksum',
- 'zdb_object_range_neg', 'zdb_object_range_pos', 'zdb_objset_id',
- 'zdb_decompress_zstd', 'zdb_recover', 'zdb_recover_2', 'zdb_backup']
-pre =
-post =
-tags = ['functional', 'cli_root', 'zdb']
-timeout = 1200
-
-[tests/functional/cli_root/zfs]
-tests = ['zfs_001_neg', 'zfs_002_pos']
-tags = ['functional', 'cli_root', 'zfs']
-
-[tests/functional/cli_root/zfs_bookmark]
-tests = ['zfs_bookmark_cliargs']
-tags = ['functional', 'cli_root', 'zfs_bookmark']
-
-[tests/functional/cli_root/zfs_change-key]
-tests = ['zfs_change-key', 'zfs_change-key_child', 'zfs_change-key_format',
- 'zfs_change-key_inherit', 'zfs_change-key_load', 'zfs_change-key_location',
- 'zfs_change-key_pbkdf2iters', 'zfs_change-key_clones']
-tags = ['functional', 'cli_root', 'zfs_change-key']
-
-[tests/functional/cli_root/zfs_clone]
-tests = ['zfs_clone_001_neg', 'zfs_clone_002_pos', 'zfs_clone_003_pos',
- 'zfs_clone_004_pos', 'zfs_clone_005_pos', 'zfs_clone_006_pos',
- 'zfs_clone_007_pos', 'zfs_clone_008_neg', 'zfs_clone_009_neg',
- 'zfs_clone_010_pos', 'zfs_clone_encrypted', 'zfs_clone_deeply_nested',
- 'zfs_clone_rm_nested']
-tags = ['functional', 'cli_root', 'zfs_clone']
-
-[tests/functional/cli_root/zfs_copies]
-tests = ['zfs_copies_001_pos', 'zfs_copies_002_pos', 'zfs_copies_003_pos',
- 'zfs_copies_004_neg', 'zfs_copies_005_neg', 'zfs_copies_006_pos']
-tags = ['functional', 'cli_root', 'zfs_copies']
-
-[tests/functional/cli_root/zfs_create]
-tests = ['zfs_create_001_pos', 'zfs_create_002_pos', 'zfs_create_003_pos',
- 'zfs_create_004_pos', 'zfs_create_005_pos', 'zfs_create_006_pos',
- 'zfs_create_007_pos', 'zfs_create_008_neg', 'zfs_create_009_neg',
- 'zfs_create_010_neg', 'zfs_create_011_pos', 'zfs_create_012_pos',
- 'zfs_create_013_pos', 'zfs_create_014_pos', 'zfs_create_encrypted',
- 'zfs_create_crypt_combos', 'zfs_create_dryrun', 'zfs_create_nomount',
- 'zfs_create_verbose']
-tags = ['functional', 'cli_root', 'zfs_create']
-
-[tests/functional/cli_root/zfs_destroy]
-tests = ['zfs_clone_livelist_condense_and_disable',
- 'zfs_clone_livelist_condense_races', 'zfs_clone_livelist_dedup',
- 'zfs_destroy_001_pos', 'zfs_destroy_002_pos', 'zfs_destroy_003_pos',
- 'zfs_destroy_004_pos', 'zfs_destroy_005_neg', 'zfs_destroy_006_neg',
- 'zfs_destroy_007_neg', 'zfs_destroy_008_pos', 'zfs_destroy_009_pos',
- 'zfs_destroy_010_pos', 'zfs_destroy_011_pos', 'zfs_destroy_012_pos',
- 'zfs_destroy_013_neg', 'zfs_destroy_014_pos', 'zfs_destroy_015_pos',
- 'zfs_destroy_016_pos', 'zfs_destroy_clone_livelist',
- 'zfs_destroy_dev_removal', 'zfs_destroy_dev_removal_condense']
-tags = ['functional', 'cli_root', 'zfs_destroy']
-
-[tests/functional/cli_root/zfs_diff]
-tests = ['zfs_diff_changes', 'zfs_diff_cliargs', 'zfs_diff_timestamp',
- 'zfs_diff_types', 'zfs_diff_encrypted', 'zfs_diff_mangle']
-tags = ['functional', 'cli_root', 'zfs_diff']
-
-[tests/functional/cli_root/zfs_get]
-tests = ['zfs_get_001_pos', 'zfs_get_002_pos', 'zfs_get_003_pos',
- 'zfs_get_004_pos', 'zfs_get_005_neg', 'zfs_get_006_neg', 'zfs_get_007_neg',
- 'zfs_get_008_pos', 'zfs_get_009_pos', 'zfs_get_010_neg']
-tags = ['functional', 'cli_root', 'zfs_get']
-
-[tests/functional/cli_root/zfs_ids_to_path]
-tests = ['zfs_ids_to_path_001_pos']
-tags = ['functional', 'cli_root', 'zfs_ids_to_path']
-
-[tests/functional/cli_root/zfs_inherit]
-tests = ['zfs_inherit_001_neg', 'zfs_inherit_002_neg', 'zfs_inherit_003_pos',
- 'zfs_inherit_mountpoint']
-tags = ['functional', 'cli_root', 'zfs_inherit']
-
-[tests/functional/cli_root/zfs_load-key]
-tests = ['zfs_load-key', 'zfs_load-key_all', 'zfs_load-key_file',
- 'zfs_load-key_https', 'zfs_load-key_location', 'zfs_load-key_noop',
- 'zfs_load-key_recursive']
-tags = ['functional', 'cli_root', 'zfs_load-key']
-
-[tests/functional/cli_root/zfs_mount]
-tests = ['zfs_mount_001_pos', 'zfs_mount_002_pos', 'zfs_mount_003_pos',
- 'zfs_mount_004_pos', 'zfs_mount_005_pos', 'zfs_mount_007_pos',
- 'zfs_mount_009_neg', 'zfs_mount_010_neg', 'zfs_mount_011_neg',
- 'zfs_mount_012_pos', 'zfs_mount_all_001_pos', 'zfs_mount_encrypted',
- 'zfs_mount_remount', 'zfs_mount_all_fail', 'zfs_mount_all_mountpoints',
- 'zfs_mount_test_race', 'zfs_mount_recursive']
-tags = ['functional', 'cli_root', 'zfs_mount']
-
-[tests/functional/cli_root/zfs_program]
-tests = ['zfs_program_json']
-tags = ['functional', 'cli_root', 'zfs_program']
-
-[tests/functional/cli_root/zfs_promote]
-tests = ['zfs_promote_001_pos', 'zfs_promote_002_pos', 'zfs_promote_003_pos',
- 'zfs_promote_004_pos', 'zfs_promote_005_pos', 'zfs_promote_006_neg',
- 'zfs_promote_007_neg', 'zfs_promote_008_pos', 'zfs_promote_encryptionroot']
-tags = ['functional', 'cli_root', 'zfs_promote']
-
-[tests/functional/cli_root/zfs_property]
-tests = ['zfs_written_property_001_pos']
-tags = ['functional', 'cli_root', 'zfs_property']
-
-[tests/functional/cli_root/zfs_receive]
-tests = ['zfs_receive_001_pos', 'zfs_receive_002_pos', 'zfs_receive_003_pos',
- 'zfs_receive_004_neg', 'zfs_receive_005_neg', 'zfs_receive_006_pos',
- 'zfs_receive_007_neg', 'zfs_receive_008_pos', 'zfs_receive_009_neg',
- 'zfs_receive_010_pos', 'zfs_receive_011_pos', 'zfs_receive_012_pos',
- 'zfs_receive_013_pos', 'zfs_receive_014_pos', 'zfs_receive_015_pos',
- 'zfs_receive_016_pos', 'receive-o-x_props_override',
- 'receive-o-x_props_aliases',
- 'zfs_receive_from_encrypted', 'zfs_receive_to_encrypted',
- 'zfs_receive_raw', 'zfs_receive_raw_incremental', 'zfs_receive_-e',
- 'zfs_receive_raw_-d', 'zfs_receive_from_zstd', 'zfs_receive_new_props',
- 'zfs_receive_-wR-encrypted-mix', 'zfs_receive_corrective',
- 'zfs_receive_compressed_corrective', 'zfs_receive_large_block_corrective']
-tags = ['functional', 'cli_root', 'zfs_receive']
-
-[tests/functional/cli_root/zfs_rename]
-tests = ['zfs_rename_001_pos', 'zfs_rename_002_pos', 'zfs_rename_003_pos',
- 'zfs_rename_004_neg', 'zfs_rename_005_neg', 'zfs_rename_006_pos',
- 'zfs_rename_007_pos', 'zfs_rename_008_pos', 'zfs_rename_009_neg',
- 'zfs_rename_010_neg', 'zfs_rename_011_pos', 'zfs_rename_012_neg',
- 'zfs_rename_013_pos', 'zfs_rename_014_neg', 'zfs_rename_encrypted_child',
- 'zfs_rename_to_encrypted', 'zfs_rename_mountpoint', 'zfs_rename_nounmount']
-tags = ['functional', 'cli_root', 'zfs_rename']
-
-[tests/functional/cli_root/zfs_reservation]
-tests = ['zfs_reservation_001_pos', 'zfs_reservation_002_pos']
-tags = ['functional', 'cli_root', 'zfs_reservation']
-
-[tests/functional/cli_root/zfs_rollback]
-tests = ['zfs_rollback_001_pos', 'zfs_rollback_002_pos',
- 'zfs_rollback_003_neg', 'zfs_rollback_004_neg']
-tags = ['functional', 'cli_root', 'zfs_rollback']
-
-[tests/functional/cli_root/zfs_send]
-tests = ['zfs_send_001_pos', 'zfs_send_002_pos', 'zfs_send_003_pos',
- 'zfs_send_004_neg', 'zfs_send_005_pos', 'zfs_send_006_pos',
- 'zfs_send_007_pos', 'zfs_send_encrypted', 'zfs_send_encrypted_unloaded',
- 'zfs_send_raw', 'zfs_send_sparse', 'zfs_send-b', 'zfs_send_skip_missing']
-tags = ['functional', 'cli_root', 'zfs_send']
-
-[tests/functional/cli_root/zfs_set]
-tests = ['cache_001_pos', 'cache_002_neg', 'canmount_001_pos',
- 'canmount_002_pos', 'canmount_003_pos', 'canmount_004_pos',
- 'checksum_001_pos', 'compression_001_pos', 'mountpoint_001_pos',
- 'mountpoint_002_pos', 'reservation_001_neg', 'user_property_002_pos',
- 'share_mount_001_neg', 'snapdir_001_pos', 'onoffs_001_pos',
- 'user_property_001_pos', 'user_property_003_neg', 'readonly_001_pos',
- 'user_property_004_pos', 'version_001_neg', 'zfs_set_001_neg',
- 'zfs_set_002_neg', 'zfs_set_003_neg', 'property_alias_001_pos',
- 'mountpoint_003_pos', 'ro_props_001_pos', 'zfs_set_keylocation',
- 'zfs_set_feature_activation', 'zfs_set_nomount']
-tags = ['functional', 'cli_root', 'zfs_set']
-
-[tests/functional/cli_root/zfs_share]
-tests = ['zfs_share_001_pos', 'zfs_share_002_pos', 'zfs_share_003_pos',
- 'zfs_share_004_pos', 'zfs_share_006_pos', 'zfs_share_008_neg',
- 'zfs_share_010_neg', 'zfs_share_011_pos', 'zfs_share_concurrent_shares',
- 'zfs_share_after_mount']
-tags = ['functional', 'cli_root', 'zfs_share']
-
-[tests/functional/cli_root/zfs_snapshot]
-tests = ['zfs_snapshot_001_neg', 'zfs_snapshot_002_neg',
- 'zfs_snapshot_003_neg', 'zfs_snapshot_004_neg', 'zfs_snapshot_005_neg',
- 'zfs_snapshot_006_pos', 'zfs_snapshot_007_neg', 'zfs_snapshot_008_neg',
- 'zfs_snapshot_009_pos']
-tags = ['functional', 'cli_root', 'zfs_snapshot']
-
-[tests/functional/cli_root/zfs_unload-key]
-tests = ['zfs_unload-key', 'zfs_unload-key_all', 'zfs_unload-key_recursive']
-tags = ['functional', 'cli_root', 'zfs_unload-key']
-
-[tests/functional/cli_root/zfs_unmount]
-tests = ['zfs_unmount_001_pos', 'zfs_unmount_002_pos', 'zfs_unmount_003_pos',
- 'zfs_unmount_004_pos', 'zfs_unmount_005_pos', 'zfs_unmount_006_pos',
- 'zfs_unmount_007_neg', 'zfs_unmount_008_neg', 'zfs_unmount_009_pos',
- 'zfs_unmount_all_001_pos', 'zfs_unmount_nested', 'zfs_unmount_unload_keys']
-tags = ['functional', 'cli_root', 'zfs_unmount']
-
-[tests/functional/cli_root/zfs_unshare]
-tests = ['zfs_unshare_001_pos', 'zfs_unshare_002_pos', 'zfs_unshare_003_pos',
- 'zfs_unshare_004_neg', 'zfs_unshare_005_neg', 'zfs_unshare_006_pos',
- 'zfs_unshare_007_pos']
-tags = ['functional', 'cli_root', 'zfs_unshare']
-
-[tests/functional/cli_root/zfs_upgrade]
-tests = ['zfs_upgrade_001_pos', 'zfs_upgrade_002_pos', 'zfs_upgrade_003_pos',
- 'zfs_upgrade_004_pos', 'zfs_upgrade_005_pos', 'zfs_upgrade_006_neg',
- 'zfs_upgrade_007_neg']
-tags = ['functional', 'cli_root', 'zfs_upgrade']
-
-[tests/functional/cli_root/zfs_wait]
-tests = ['zfs_wait_deleteq', 'zfs_wait_getsubopt']
-tags = ['functional', 'cli_root', 'zfs_wait']
-
-[tests/functional/cli_root/zhack]
-tests = ['zhack_label_repair_001', 'zhack_label_repair_002',
- 'zhack_label_repair_003', 'zhack_label_repair_004']
-pre =
-post =
-tags = ['functional', 'cli_root', 'zhack']
-
-[tests/functional/cli_root/zpool]
-tests = ['zpool_001_neg', 'zpool_002_pos', 'zpool_003_pos', 'zpool_colors']
-tags = ['functional', 'cli_root', 'zpool']
-
-[tests/functional/cli_root/zpool_add]
-tests = ['zpool_add_001_pos', 'zpool_add_002_pos', 'zpool_add_003_pos',
- 'zpool_add_004_pos', 'zpool_add_006_pos', 'zpool_add_007_neg',
- 'zpool_add_008_neg', 'zpool_add_009_neg', 'zpool_add_010_pos',
- 'add-o_ashift', 'add_prop_ashift', 'zpool_add_dryrun_output',
- 'zpool_add--allow-ashift-mismatch']
-tags = ['functional', 'cli_root', 'zpool_add']
-
-[tests/functional/cli_root/zpool_attach]
-tests = ['zpool_attach_001_neg', 'attach-o_ashift']
-tags = ['functional', 'cli_root', 'zpool_attach']
-
-[tests/functional/cli_root/zpool_clear]
-tests = ['zpool_clear_001_pos', 'zpool_clear_002_neg', 'zpool_clear_003_neg',
- 'zpool_clear_readonly']
-tags = ['functional', 'cli_root', 'zpool_clear']
-
-[tests/functional/cli_root/zpool_create]
-tests = ['zpool_create_001_pos', 'zpool_create_002_pos',
- 'zpool_create_003_pos', 'zpool_create_004_pos', 'zpool_create_005_pos',
- 'zpool_create_006_pos', 'zpool_create_007_neg', 'zpool_create_008_pos',
- 'zpool_create_009_neg', 'zpool_create_010_neg', 'zpool_create_011_neg',
- 'zpool_create_012_neg', 'zpool_create_014_neg', 'zpool_create_015_neg',
- 'zpool_create_017_neg', 'zpool_create_018_pos', 'zpool_create_019_pos',
- 'zpool_create_020_pos', 'zpool_create_021_pos', 'zpool_create_022_pos',
- 'zpool_create_023_neg', 'zpool_create_024_pos',
- 'zpool_create_encrypted', 'zpool_create_crypt_combos',
- 'zpool_create_draid_001_pos', 'zpool_create_draid_002_pos',
- 'zpool_create_draid_003_pos', 'zpool_create_draid_004_pos',
- 'zpool_create_features_001_pos', 'zpool_create_features_002_pos',
- 'zpool_create_features_003_pos', 'zpool_create_features_004_neg',
- 'zpool_create_features_005_pos', 'zpool_create_features_006_pos',
- 'zpool_create_features_007_pos', 'zpool_create_features_008_pos',
- 'zpool_create_features_009_pos', 'create-o_ashift',
- 'zpool_create_tempname', 'zpool_create_dryrun_output']
-tags = ['functional', 'cli_root', 'zpool_create']
-
-[tests/functional/cli_root/zpool_destroy]
-tests = ['zpool_destroy_001_pos', 'zpool_destroy_002_pos',
- 'zpool_destroy_003_neg']
-pre =
-post =
-tags = ['functional', 'cli_root', 'zpool_destroy']
-
-[tests/functional/cli_root/zpool_detach]
-tests = ['zpool_detach_001_neg']
-tags = ['functional', 'cli_root', 'zpool_detach']
-
-[tests/functional/cli_root/zpool_events]
-tests = ['zpool_events_clear', 'zpool_events_cliargs', 'zpool_events_follow',
- 'zpool_events_poolname', 'zpool_events_errors', 'zpool_events_duplicates',
- 'zpool_events_clear_retained']
-tags = ['functional', 'cli_root', 'zpool_events']
-
-[tests/functional/cli_root/zpool_export]
-tests = ['zpool_export_001_pos', 'zpool_export_002_pos',
- 'zpool_export_003_neg', 'zpool_export_004_pos']
-tags = ['functional', 'cli_root', 'zpool_export']
-
-[tests/functional/cli_root/zpool_get]
-tests = ['zpool_get_001_pos', 'zpool_get_002_pos', 'zpool_get_003_pos',
- 'zpool_get_004_neg', 'zpool_get_005_pos', 'vdev_get_001_pos']
-tags = ['functional', 'cli_root', 'zpool_get']
-
-[tests/functional/cli_root/zpool_history]
-tests = ['zpool_history_001_neg', 'zpool_history_002_pos']
-tags = ['functional', 'cli_root', 'zpool_history']
-
-[tests/functional/cli_root/zpool_import]
-tests = ['zpool_import_001_pos', 'zpool_import_002_pos',
- 'zpool_import_003_pos', 'zpool_import_004_pos', 'zpool_import_005_pos',
- 'zpool_import_006_pos', 'zpool_import_007_pos', 'zpool_import_008_pos',
- 'zpool_import_009_neg', 'zpool_import_010_pos', 'zpool_import_011_neg',
- 'zpool_import_012_pos', 'zpool_import_013_neg', 'zpool_import_014_pos',
- 'zpool_import_015_pos', 'zpool_import_016_pos', 'zpool_import_017_pos',
- 'zpool_import_features_001_pos', 'zpool_import_features_002_neg',
- 'zpool_import_features_003_pos', 'zpool_import_missing_001_pos',
- 'zpool_import_missing_002_pos', 'zpool_import_missing_003_pos',
- 'zpool_import_rename_001_pos', 'zpool_import_all_001_pos',
- 'zpool_import_encrypted', 'zpool_import_encrypted_load',
- 'zpool_import_errata3', 'zpool_import_errata4',
- 'import_cachefile_device_added',
- 'import_cachefile_device_removed',
- 'import_cachefile_device_replaced',
- 'import_cachefile_mirror_attached',
- 'import_cachefile_mirror_detached',
- 'import_cachefile_paths_changed',
- 'import_cachefile_shared_device',
- 'import_devices_missing', 'import_log_missing',
- 'import_paths_changed',
- 'import_rewind_config_changed',
- 'import_rewind_device_replaced',
- 'zpool_import_status']
-tags = ['functional', 'cli_root', 'zpool_import']
-timeout = 1200
-
-[tests/functional/cli_root/zpool_labelclear]
-tests = ['zpool_labelclear_active', 'zpool_labelclear_exported',
- 'zpool_labelclear_removed', 'zpool_labelclear_valid']
-pre =
-post =
-tags = ['functional', 'cli_root', 'zpool_labelclear']
-
-[tests/functional/cli_root/zpool_initialize]
-tests = ['zpool_initialize_attach_detach_add_remove',
- 'zpool_initialize_fault_export_import_online',
- 'zpool_initialize_import_export',
- 'zpool_initialize_offline_export_import_online',
- 'zpool_initialize_online_offline',
- 'zpool_initialize_split',
- 'zpool_initialize_start_and_cancel_neg',
- 'zpool_initialize_start_and_cancel_pos',
- 'zpool_initialize_suspend_resume',
- 'zpool_initialize_uninit',
- 'zpool_initialize_unsupported_vdevs',
- 'zpool_initialize_verify_checksums',
- 'zpool_initialize_verify_initialized']
-pre =
-tags = ['functional', 'cli_root', 'zpool_initialize']
-
-[tests/functional/cli_root/zpool_offline]
-tests = ['zpool_offline_001_pos', 'zpool_offline_002_neg',
- 'zpool_offline_003_pos']
-tags = ['functional', 'cli_root', 'zpool_offline']
-
-[tests/functional/cli_root/zpool_online]
-tests = ['zpool_online_001_pos', 'zpool_online_002_neg']
-tags = ['functional', 'cli_root', 'zpool_online']
-
-[tests/functional/cli_root/zpool_remove]
-tests = ['zpool_remove_001_neg', 'zpool_remove_002_pos',
- 'zpool_remove_003_pos']
-tags = ['functional', 'cli_root', 'zpool_remove']
-
-[tests/functional/cli_root/zpool_replace]
-tests = ['zpool_replace_001_neg', 'replace-o_ashift', 'replace_prop_ashift']
-tags = ['functional', 'cli_root', 'zpool_replace']
-
-[tests/functional/cli_root/zpool_resilver]
-tests = ['zpool_resilver_bad_args', 'zpool_resilver_restart',
- 'zpool_resilver_concurrent']
-tags = ['functional', 'cli_root', 'zpool_resilver']
-
-[tests/functional/cli_root/zpool_scrub]
-tests = ['zpool_scrub_001_neg', 'zpool_scrub_002_pos', 'zpool_scrub_003_pos',
- 'zpool_scrub_004_pos', 'zpool_scrub_005_pos',
- 'zpool_scrub_encrypted_unloaded', 'zpool_scrub_print_repairing',
- 'zpool_scrub_offline_device', 'zpool_scrub_multiple_copies',
- 'zpool_error_scrub_001_pos', 'zpool_error_scrub_002_pos',
- 'zpool_error_scrub_003_pos', 'zpool_error_scrub_004_pos']
-tags = ['functional', 'cli_root', 'zpool_scrub']
-
-[tests/functional/cli_root/zpool_set]
-tests = ['zpool_set_001_pos', 'zpool_set_002_neg', 'zpool_set_003_neg',
- 'zpool_set_ashift', 'zpool_set_features', 'vdev_set_001_pos',
- 'user_property_001_pos', 'user_property_002_neg']
-tags = ['functional', 'cli_root', 'zpool_set']
-
-[tests/functional/cli_root/zpool_split]
-tests = ['zpool_split_cliargs', 'zpool_split_devices',
- 'zpool_split_encryption', 'zpool_split_props', 'zpool_split_vdevs',
- 'zpool_split_resilver', 'zpool_split_indirect',
- 'zpool_split_dryrun_output']
-tags = ['functional', 'cli_root', 'zpool_split']
-
-[tests/functional/cli_root/zpool_status]
-tests = ['zpool_status_001_pos', 'zpool_status_002_pos',
- 'zpool_status_003_pos', 'zpool_status_004_pos',
- 'zpool_status_005_pos', 'zpool_status_006_pos',
- 'zpool_status_007_pos', 'zpool_status_008_pos',
- 'zpool_status_features_001_pos']
-tags = ['functional', 'cli_root', 'zpool_status']
-
-[tests/functional/cli_root/zpool_sync]
-tests = ['zpool_sync_001_pos', 'zpool_sync_002_neg']
-tags = ['functional', 'cli_root', 'zpool_sync']
-
-[tests/functional/cli_root/zpool_trim]
-tests = ['zpool_trim_attach_detach_add_remove',
- 'zpool_trim_fault_export_import_online',
- 'zpool_trim_import_export', 'zpool_trim_multiple', 'zpool_trim_neg',
- 'zpool_trim_offline_export_import_online', 'zpool_trim_online_offline',
- 'zpool_trim_partial', 'zpool_trim_rate', 'zpool_trim_rate_neg',
- 'zpool_trim_secure', 'zpool_trim_split', 'zpool_trim_start_and_cancel_neg',
- 'zpool_trim_start_and_cancel_pos', 'zpool_trim_suspend_resume',
- 'zpool_trim_unsupported_vdevs', 'zpool_trim_verify_checksums',
- 'zpool_trim_verify_trimmed']
-tags = ['functional', 'zpool_trim']
-
-[tests/functional/cli_root/zpool_upgrade]
-tests = ['zpool_upgrade_001_pos', 'zpool_upgrade_002_pos',
- 'zpool_upgrade_003_pos', 'zpool_upgrade_004_pos',
- 'zpool_upgrade_005_neg', 'zpool_upgrade_006_neg',
- 'zpool_upgrade_007_pos', 'zpool_upgrade_008_pos',
- 'zpool_upgrade_009_neg', 'zpool_upgrade_features_001_pos']
-tags = ['functional', 'cli_root', 'zpool_upgrade']
-
-[tests/functional/cli_root/zpool_wait]
-tests = ['zpool_wait_discard', 'zpool_wait_freeing',
- 'zpool_wait_initialize_basic', 'zpool_wait_initialize_cancel',
- 'zpool_wait_initialize_flag', 'zpool_wait_multiple',
- 'zpool_wait_no_activity', 'zpool_wait_remove', 'zpool_wait_remove_cancel',
- 'zpool_wait_trim_basic', 'zpool_wait_trim_cancel', 'zpool_wait_trim_flag',
- 'zpool_wait_usage']
-tags = ['functional', 'cli_root', 'zpool_wait']
-
-[tests/functional/cli_root/zpool_wait/scan]
-tests = ['zpool_wait_replace_cancel', 'zpool_wait_rebuild',
- 'zpool_wait_resilver', 'zpool_wait_scrub_cancel',
- 'zpool_wait_replace', 'zpool_wait_scrub_basic', 'zpool_wait_scrub_flag']
-tags = ['functional', 'cli_root', 'zpool_wait']
-
-[tests/functional/cli_user/misc]
-tests = ['zdb_001_neg', 'zfs_001_neg', 'zfs_allow_001_neg',
- 'zfs_clone_001_neg', 'zfs_create_001_neg', 'zfs_destroy_001_neg',
- 'zfs_get_001_neg', 'zfs_inherit_001_neg', 'zfs_mount_001_neg',
- 'zfs_promote_001_neg', 'zfs_receive_001_neg', 'zfs_rename_001_neg',
- 'zfs_rollback_001_neg', 'zfs_send_001_neg', 'zfs_set_001_neg',
- 'zfs_share_001_neg', 'zfs_snapshot_001_neg', 'zfs_unallow_001_neg',
- 'zfs_unmount_001_neg', 'zfs_unshare_001_neg', 'zfs_upgrade_001_neg',
- 'zpool_001_neg', 'zpool_add_001_neg', 'zpool_attach_001_neg',
- 'zpool_clear_001_neg', 'zpool_create_001_neg', 'zpool_destroy_001_neg',
- 'zpool_detach_001_neg', 'zpool_export_001_neg', 'zpool_get_001_neg',
- 'zpool_history_001_neg', 'zpool_import_001_neg', 'zpool_import_002_neg',
- 'zpool_offline_001_neg', 'zpool_online_001_neg', 'zpool_remove_001_neg',
- 'zpool_replace_001_neg', 'zpool_scrub_001_neg', 'zpool_set_001_neg',
- 'zpool_status_001_neg', 'zpool_upgrade_001_neg', 'arcstat_001_pos',
- 'arc_summary_001_pos', 'arc_summary_002_neg', 'zpool_wait_privilege',
- 'zilstat_001_pos']
-user =
-tags = ['functional', 'cli_user', 'misc']
-
-[tests/functional/cli_user/zfs_list]
-tests = ['zfs_list_001_pos', 'zfs_list_002_pos', 'zfs_list_003_pos',
- 'zfs_list_004_neg', 'zfs_list_005_neg', 'zfs_list_007_pos',
- 'zfs_list_008_neg']
-user =
-tags = ['functional', 'cli_user', 'zfs_list']
-
-[tests/functional/cli_user/zpool_iostat]
-tests = ['zpool_iostat_001_neg', 'zpool_iostat_002_pos',
- 'zpool_iostat_003_neg', 'zpool_iostat_004_pos',
- 'zpool_iostat_005_pos', 'zpool_iostat_-c_disable',
- 'zpool_iostat_-c_homedir', 'zpool_iostat_-c_searchpath']
-user =
-tags = ['functional', 'cli_user', 'zpool_iostat']
-
-[tests/functional/cli_user/zpool_list]
-tests = ['zpool_list_001_pos', 'zpool_list_002_neg']
-user =
-tags = ['functional', 'cli_user', 'zpool_list']
-
-[tests/functional/cli_user/zpool_status]
-tests = ['zpool_status_003_pos', 'zpool_status_-c_disable',
- 'zpool_status_-c_homedir', 'zpool_status_-c_searchpath']
-user =
-tags = ['functional', 'cli_user', 'zpool_status']
-
-[tests/functional/compression]
-tests = ['compress_001_pos', 'compress_002_pos', 'compress_003_pos',
- 'l2arc_compressed_arc', 'l2arc_compressed_arc_disabled',
- 'l2arc_encrypted', 'l2arc_encrypted_no_compressed_arc']
-tags = ['functional', 'compression']
-
-[tests/functional/cp_files]
-tests = ['cp_files_001_pos', 'cp_files_002_pos', 'cp_stress']
-tags = ['functional', 'cp_files']
-
-[tests/functional/crtime]
-tests = ['crtime_001_pos' ]
-tags = ['functional', 'crtime']
-
-[tests/functional/ctime]
-tests = ['ctime_001_pos' ]
-tags = ['functional', 'ctime']
-
-[tests/functional/deadman]
-tests = ['deadman_ratelimit', 'deadman_sync', 'deadman_zio']
-pre =
-post =
-tags = ['functional', 'deadman']
-
-[tests/functional/delegate]
-tests = ['zfs_allow_001_pos', 'zfs_allow_002_pos', 'zfs_allow_003_pos',
- 'zfs_allow_004_pos', 'zfs_allow_005_pos', 'zfs_allow_006_pos',
- 'zfs_allow_007_pos', 'zfs_allow_008_pos', 'zfs_allow_009_neg',
- 'zfs_allow_010_pos', 'zfs_allow_011_neg', 'zfs_allow_012_neg',
- 'zfs_unallow_001_pos', 'zfs_unallow_002_pos', 'zfs_unallow_003_pos',
- 'zfs_unallow_004_pos', 'zfs_unallow_005_pos', 'zfs_unallow_006_pos',
- 'zfs_unallow_007_neg', 'zfs_unallow_008_neg']
-tags = ['functional', 'delegate']
-
-[tests/functional/exec]
-tests = ['exec_001_pos', 'exec_002_neg']
-tags = ['functional', 'exec']
-
-[tests/functional/fallocate]
-tests = ['fallocate_punch-hole']
-tags = ['functional', 'fallocate']
-
-[tests/functional/features/async_destroy]
-tests = ['async_destroy_001_pos']
-tags = ['functional', 'features', 'async_destroy']
-
-[tests/functional/features/large_dnode]
-tests = ['large_dnode_001_pos', 'large_dnode_003_pos', 'large_dnode_004_neg',
- 'large_dnode_005_pos', 'large_dnode_007_neg', 'large_dnode_009_pos']
-tags = ['functional', 'features', 'large_dnode']
-
-[tests/functional/grow]
-pre =
-post =
-tests = ['grow_pool_001_pos', 'grow_replicas_001_pos']
-tags = ['functional', 'grow']
-
-[tests/functional/history]
-tests = ['history_001_pos', 'history_002_pos', 'history_003_pos',
- 'history_004_pos', 'history_005_neg', 'history_006_neg',
- 'history_007_pos', 'history_008_pos', 'history_009_pos',
- 'history_010_pos']
-tags = ['functional', 'history']
-
-[tests/functional/hkdf]
-pre =
-post =
-tests = ['hkdf_test']
-tags = ['functional', 'hkdf']
-
-[tests/functional/inheritance]
-tests = ['inherit_001_pos']
-pre =
-tags = ['functional', 'inheritance']
-
-[tests/functional/io]
-tests = ['sync', 'psync', 'posixaio', 'mmap']
-tags = ['functional', 'io']
-
-[tests/functional/inuse]
-tests = ['inuse_004_pos', 'inuse_005_pos', 'inuse_008_pos', 'inuse_009_pos']
-post =
-tags = ['functional', 'inuse']
-
-[tests/functional/large_files]
-tests = ['large_files_001_pos', 'large_files_002_pos']
-tags = ['functional', 'large_files']
-
-[tests/functional/limits]
-tests = ['filesystem_count', 'filesystem_limit', 'snapshot_count',
- 'snapshot_limit']
-tags = ['functional', 'limits']
-
-[tests/functional/link_count]
-tests = ['link_count_001', 'link_count_root_inode']
-tags = ['functional', 'link_count']
-
-[tests/functional/migration]
-tests = ['migration_001_pos', 'migration_002_pos', 'migration_003_pos',
- 'migration_004_pos', 'migration_005_pos', 'migration_006_pos',
- 'migration_007_pos', 'migration_008_pos', 'migration_009_pos',
- 'migration_010_pos', 'migration_011_pos', 'migration_012_pos']
-tags = ['functional', 'migration']
-
-[tests/functional/mmap]
-tests = ['mmap_mixed', 'mmap_read_001_pos', 'mmap_seek_001_pos',
- 'mmap_sync_001_pos', 'mmap_write_001_pos']
-tags = ['functional', 'mmap']
-
-[tests/functional/mount]
-tests = ['umount_001', 'umountall_001']
-tags = ['functional', 'mount']
-
-[tests/functional/mv_files]
-tests = ['mv_files_001_pos', 'mv_files_002_pos', 'random_creation']
-tags = ['functional', 'mv_files']
-
-[tests/functional/nestedfs]
-tests = ['nestedfs_001_pos']
-tags = ['functional', 'nestedfs']
-
-[tests/functional/no_space]
-tests = ['enospc_001_pos', 'enospc_002_pos', 'enospc_003_pos',
- 'enospc_df', 'enospc_ganging', 'enospc_rm']
-tags = ['functional', 'no_space']
-
-[tests/functional/nopwrite]
-tests = ['nopwrite_copies', 'nopwrite_mtime', 'nopwrite_negative',
- 'nopwrite_promoted_clone', 'nopwrite_recsize', 'nopwrite_sync',
- 'nopwrite_varying_compression', 'nopwrite_volume']
-tags = ['functional', 'nopwrite']
-
-[tests/functional/online_offline]
-tests = ['online_offline_001_pos', 'online_offline_002_neg',
- 'online_offline_003_neg']
-tags = ['functional', 'online_offline']
-
-[tests/functional/pool_checkpoint]
-tests = ['checkpoint_after_rewind', 'checkpoint_big_rewind',
- 'checkpoint_capacity', 'checkpoint_conf_change', 'checkpoint_discard',
- 'checkpoint_discard_busy', 'checkpoint_discard_many',
- 'checkpoint_indirect', 'checkpoint_invalid', 'checkpoint_lun_expsz',
- 'checkpoint_open', 'checkpoint_removal', 'checkpoint_rewind',
- 'checkpoint_ro_rewind', 'checkpoint_sm_scale', 'checkpoint_twice',
- 'checkpoint_vdev_add', 'checkpoint_zdb', 'checkpoint_zhack_feat']
-tags = ['functional', 'pool_checkpoint']
-timeout = 1800
-
-[tests/functional/pool_names]
-tests = ['pool_names_001_pos', 'pool_names_002_neg']
-pre =
-post =
-tags = ['functional', 'pool_names']
-
-[tests/functional/poolversion]
-tests = ['poolversion_001_pos', 'poolversion_002_pos']
-tags = ['functional', 'poolversion']
-
[tests/functional/pyzfs]
tests = ['pyzfs_unittest']
pre =
post =
tags = ['functional', 'pyzfs']
-[tests/functional/quota]
-tests = ['quota_001_pos', 'quota_002_pos', 'quota_003_pos',
- 'quota_004_pos', 'quota_005_pos', 'quota_006_neg']
-tags = ['functional', 'quota']
-
-[tests/functional/redacted_send]
-tests = ['redacted_compressed', 'redacted_contents', 'redacted_deleted',
- 'redacted_disabled_feature', 'redacted_embedded', 'redacted_holes',
- 'redacted_incrementals', 'redacted_largeblocks', 'redacted_many_clones',
- 'redacted_mixed_recsize', 'redacted_mounts', 'redacted_negative',
- 'redacted_origin', 'redacted_panic', 'redacted_props', 'redacted_resume',
- 'redacted_size', 'redacted_volume']
-tags = ['functional', 'redacted_send']
-
-[tests/functional/raidz]
-tests = ['raidz_001_neg', 'raidz_002_pos', 'raidz_expand_001_pos',
- 'raidz_expand_002_pos', 'raidz_expand_003_neg', 'raidz_expand_003_pos',
- 'raidz_expand_004_pos', 'raidz_expand_005_pos', 'raidz_expand_006_neg',
- 'raidz_expand_007_neg']
-tags = ['functional', 'raidz']
-timeout = 1200
-
-[tests/functional/redundancy]
-tests = ['redundancy_draid', 'redundancy_draid1', 'redundancy_draid2',
- 'redundancy_draid3', 'redundancy_draid_damaged1',
- 'redundancy_draid_damaged2', 'redundancy_draid_spare1',
- 'redundancy_draid_spare2', 'redundancy_draid_spare3', 'redundancy_mirror',
- 'redundancy_raidz', 'redundancy_raidz1', 'redundancy_raidz2',
- 'redundancy_raidz3', 'redundancy_stripe']
-tags = ['functional', 'redundancy']
-timeout = 1200
-
-[tests/functional/refquota]
-tests = ['refquota_001_pos', 'refquota_002_pos', 'refquota_003_pos',
- 'refquota_004_pos', 'refquota_005_pos', 'refquota_006_neg',
- 'refquota_007_neg', 'refquota_008_neg']
-tags = ['functional', 'refquota']
-
-[tests/functional/refreserv]
-tests = ['refreserv_001_pos', 'refreserv_002_pos', 'refreserv_003_pos',
- 'refreserv_004_pos', 'refreserv_005_pos', 'refreserv_multi_raidz',
- 'refreserv_raidz']
-tags = ['functional', 'refreserv']
-
-[tests/functional/removal]
-pre =
-tests = ['removal_all_vdev', 'removal_cancel', 'removal_check_space',
- 'removal_condense_export', 'removal_multiple_indirection',
- 'removal_nopwrite', 'removal_remap_deadlists',
- 'removal_resume_export', 'removal_sanity', 'removal_with_add',
- 'removal_with_create_fs', 'removal_with_dedup',
- 'removal_with_errors', 'removal_with_export', 'removal_with_indirect',
- 'removal_with_ganging', 'removal_with_faulted',
- 'removal_with_remove', 'removal_with_scrub', 'removal_with_send',
- 'removal_with_send_recv', 'removal_with_snapshot',
- 'removal_with_write', 'removal_with_zdb', 'remove_expanded',
- 'remove_mirror', 'remove_mirror_sanity', 'remove_raidz',
- 'remove_indirect', 'remove_attach_mirror', 'removal_reservation']
-tags = ['functional', 'removal']
-
-[tests/functional/rename_dirs]
-tests = ['rename_dirs_001_pos']
-tags = ['functional', 'rename_dirs']
-
-[tests/functional/replacement]
-tests = ['attach_import', 'attach_multiple', 'attach_rebuild',
- 'attach_resilver', 'detach', 'rebuild_disabled_feature',
- 'rebuild_multiple', 'rebuild_raidz', 'replace_import', 'replace_rebuild',
- 'replace_resilver', 'resilver_restart_001', 'resilver_restart_002',
- 'scrub_cancel']
-tags = ['functional', 'replacement']
-
-[tests/functional/reservation]
-tests = ['reservation_001_pos', 'reservation_002_pos', 'reservation_003_pos',
- 'reservation_004_pos', 'reservation_005_pos', 'reservation_006_pos',
- 'reservation_007_pos', 'reservation_008_pos', 'reservation_009_pos',
- 'reservation_010_pos', 'reservation_011_pos', 'reservation_012_pos',
- 'reservation_013_pos', 'reservation_014_pos', 'reservation_015_pos',
- 'reservation_016_pos', 'reservation_017_pos', 'reservation_018_pos',
- 'reservation_019_pos', 'reservation_020_pos', 'reservation_021_neg',
- 'reservation_022_pos']
-tags = ['functional', 'reservation']
-
-[tests/functional/rootpool]
-tests = ['rootpool_002_neg', 'rootpool_003_neg', 'rootpool_007_pos']
-tags = ['functional', 'rootpool']
-
-[tests/functional/rsend]
-tests = ['recv_dedup', 'recv_dedup_encrypted_zvol', 'rsend_001_pos',
- 'rsend_002_pos', 'rsend_003_pos', 'rsend_004_pos', 'rsend_005_pos',
- 'rsend_006_pos', 'rsend_007_pos', 'rsend_008_pos', 'rsend_009_pos',
- 'rsend_010_pos', 'rsend_011_pos', 'rsend_012_pos', 'rsend_013_pos',
- 'rsend_014_pos', 'rsend_016_neg', 'rsend_019_pos', 'rsend_020_pos',
- 'rsend_021_pos', 'rsend_022_pos', 'rsend_024_pos', 'rsend_025_pos',
- 'rsend_026_neg', 'rsend_027_pos', 'rsend_028_neg', 'rsend_029_neg',
- 'rsend_030_pos', 'rsend_031_pos', 'send-c_verify_ratio',
- 'send-c_verify_contents', 'send-c_props', 'send-c_incremental',
- 'send-c_volume', 'send-c_zstream_recompress', 'send-c_zstreamdump',
- 'send-c_lz4_disabled', 'send-c_recv_lz4_disabled',
- 'send-c_mixed_compression', 'send-c_stream_size_estimate',
- 'send-c_embedded_blocks', 'send-c_resume', 'send-cpL_varied_recsize',
- 'send-c_recv_dedup', 'send-L_toggle', 'send_encrypted_incremental',
- 'send_encrypted_freeobjects', 'send_encrypted_hierarchy',
- 'send_encrypted_props', 'send_encrypted_truncated_files',
- 'send_freeobjects', 'send_realloc_files', 'send_realloc_encrypted_files',
- 'send_spill_block', 'send_holds', 'send_hole_birth', 'send_mixed_raw',
- 'send-wR_encrypted_zvol', 'send_partial_dataset', 'send_invalid',
- 'send_doall', 'send_raw_spill_block', 'send_raw_ashift',
- 'send_raw_large_blocks']
-tags = ['functional', 'rsend']
-
-[tests/functional/scrub_mirror]
-tests = ['scrub_mirror_001_pos', 'scrub_mirror_002_pos',
- 'scrub_mirror_003_pos', 'scrub_mirror_004_pos']
-tags = ['functional', 'scrub_mirror']
-
-[tests/functional/slog]
-tests = ['slog_001_pos', 'slog_002_pos', 'slog_003_pos', 'slog_004_pos',
- 'slog_005_pos', 'slog_006_pos', 'slog_007_pos', 'slog_008_neg',
- 'slog_009_neg', 'slog_010_neg', 'slog_011_neg', 'slog_012_neg',
- 'slog_013_pos', 'slog_014_pos', 'slog_015_neg', 'slog_replay_fs_001',
- 'slog_replay_fs_002', 'slog_replay_volume', 'slog_016_pos']
-tags = ['functional', 'slog']
-
-[tests/functional/snapshot]
-tests = ['clone_001_pos', 'rollback_001_pos', 'rollback_002_pos',
- 'rollback_003_pos', 'snapshot_001_pos', 'snapshot_002_pos',
- 'snapshot_003_pos', 'snapshot_004_pos', 'snapshot_005_pos',
- 'snapshot_006_pos', 'snapshot_007_pos', 'snapshot_008_pos',
- 'snapshot_009_pos', 'snapshot_010_pos', 'snapshot_011_pos',
- 'snapshot_012_pos', 'snapshot_013_pos', 'snapshot_014_pos',
- 'snapshot_017_pos', 'snapshot_018_pos']
-tags = ['functional', 'snapshot']
-
-[tests/functional/snapused]
-tests = ['snapused_001_pos', 'snapused_002_pos', 'snapused_003_pos',
- 'snapused_004_pos', 'snapused_005_pos']
-tags = ['functional', 'snapused']
-
-[tests/functional/sparse]
-tests = ['sparse_001_pos']
-tags = ['functional', 'sparse']
-
-[tests/functional/stat]
-tests = ['stat_001_pos']
-tags = ['functional', 'stat']
-
-[tests/functional/suid]
-tests = ['suid_write_to_suid', 'suid_write_to_sgid', 'suid_write_to_suid_sgid',
- 'suid_write_to_none', 'suid_write_zil_replay']
-tags = ['functional', 'suid']
-
-[tests/functional/trim]
-tests = ['autotrim_integrity', 'autotrim_config', 'autotrim_trim_integrity',
- 'trim_integrity', 'trim_config', 'trim_l2arc']
-tags = ['functional', 'trim']
-
-[tests/functional/truncate]
-tests = ['truncate_001_pos', 'truncate_002_pos', 'truncate_timestamps']
-tags = ['functional', 'truncate']
-
-[tests/functional/upgrade]
-tests = ['upgrade_userobj_001_pos', 'upgrade_readonly_pool']
-tags = ['functional', 'upgrade']
-
-[tests/functional/userquota]
-tests = [
- 'userquota_001_pos', 'userquota_002_pos', 'userquota_003_pos',
- 'userquota_004_pos', 'userquota_005_neg', 'userquota_006_pos',
- 'userquota_007_pos', 'userquota_008_pos', 'userquota_009_pos',
- 'userquota_010_pos', 'userquota_011_pos', 'userquota_012_neg',
- 'userspace_001_pos', 'userspace_002_pos', 'userspace_encrypted',
- 'userspace_send_encrypted', 'userspace_encrypted_13709']
-tags = ['functional', 'userquota']
-
-[tests/functional/vdev_disk:Linux]
-pre =
-post =
-tests = ['page_alignment']
-tags = ['functional', 'vdev_disk']
-
-[tests/functional/vdev_zaps]
-tests = ['vdev_zaps_001_pos', 'vdev_zaps_002_pos', 'vdev_zaps_003_pos',
- 'vdev_zaps_004_pos', 'vdev_zaps_005_pos', 'vdev_zaps_006_pos',
- 'vdev_zaps_007_pos']
-tags = ['functional', 'vdev_zaps']
-
-[tests/functional/write_dirs]
-tests = ['write_dirs_001_pos', 'write_dirs_002_pos']
-tags = ['functional', 'write_dirs']
-
-[tests/functional/xattr]
-tests = ['xattr_001_pos', 'xattr_002_neg', 'xattr_003_neg', 'xattr_004_pos',
- 'xattr_005_pos', 'xattr_006_pos', 'xattr_007_neg',
- 'xattr_011_pos', 'xattr_012_pos', 'xattr_013_pos', 'xattr_compat']
-tags = ['functional', 'xattr']
-
-[tests/functional/zvol/zvol_ENOSPC]
-tests = ['zvol_ENOSPC_001_pos']
-tags = ['functional', 'zvol', 'zvol_ENOSPC']
-
-[tests/functional/zvol/zvol_cli]
-tests = ['zvol_cli_001_pos', 'zvol_cli_002_pos', 'zvol_cli_003_neg']
-tags = ['functional', 'zvol', 'zvol_cli']
-
-[tests/functional/zvol/zvol_misc]
-tests = ['zvol_misc_002_pos', 'zvol_misc_hierarchy', 'zvol_misc_rename_inuse',
- 'zvol_misc_snapdev', 'zvol_misc_trim', 'zvol_misc_volmode', 'zvol_misc_zil']
-tags = ['functional', 'zvol', 'zvol_misc']
-
-[tests/functional/zvol/zvol_stress]
-tests = ['zvol_stress']
-tags = ['functional', 'zvol', 'zvol_stress']
-
-[tests/functional/zvol/zvol_swap]
-tests = ['zvol_swap_001_pos', 'zvol_swap_002_pos', 'zvol_swap_004_pos']
-tags = ['functional', 'zvol', 'zvol_swap']
-
-[tests/functional/libzfs]
-tests = ['many_fds', 'libzfs_input']
-tags = ['functional', 'libzfs']
-
-[tests/functional/log_spacemap]
-tests = ['log_spacemap_import_logs']
-pre =
-post =
-tags = ['functional', 'log_spacemap']
-
-[tests/functional/l2arc]
-tests = ['l2arc_arcstats_pos', 'l2arc_mfuonly_pos', 'l2arc_l2miss_pos',
- 'persist_l2arc_001_pos', 'persist_l2arc_002_pos',
- 'persist_l2arc_003_neg', 'persist_l2arc_004_pos', 'persist_l2arc_005_pos']
-tags = ['functional', 'l2arc']
-[tests/functional/zpool_influxdb]
-tests = ['zpool_influxdb']
-tags = ['functional', 'zpool_influxdb']
diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run
index a0b74ef4a8c6..ddbd6375e2e3 100644
--- a/tests/runfiles/linux.run
+++ b/tests/runfiles/linux.run
@@ -22,203 +22,11 @@ failsafe = callbacks/zfs_failsafe
outputdir = /var/tmp/test_results
tags = ['functional']
-[tests/functional/acl/posix:Linux]
-tests = ['posix_001_pos', 'posix_002_pos', 'posix_003_pos', 'posix_004_pos']
-tags = ['functional', 'acl', 'posix']
-
-[tests/functional/acl/posix-sa:Linux]
-tests = ['posix_001_pos', 'posix_002_pos', 'posix_003_pos', 'posix_004_pos']
-tags = ['functional', 'acl', 'posix-sa']
-
-[tests/functional/atime:Linux]
-tests = ['atime_003_pos', 'root_relatime_on']
-tags = ['functional', 'atime']
-
-[tests/functional/block_cloning:Linux]
-tests = ['block_cloning_ficlone', 'block_cloning_ficlonerange',
- 'block_cloning_ficlonerange_partial', 'block_cloning_disabled_ficlone',
- 'block_cloning_disabled_ficlonerange']
-tags = ['functional', 'block_cloning']
-
-[tests/functional/chattr:Linux]
-tests = ['chattr_001_pos', 'chattr_002_neg']
-tags = ['functional', 'chattr']
-
-[tests/functional/cli_root/zfs:Linux]
-tests = ['zfs_003_neg']
-tags = ['functional', 'cli_root', 'zfs']
-
-[tests/functional/cli_root/zfs_mount:Linux]
-tests = ['zfs_mount_006_pos', 'zfs_mount_008_pos', 'zfs_mount_013_pos',
- 'zfs_mount_014_neg', 'zfs_multi_mount']
-tags = ['functional', 'cli_root', 'zfs_mount']
-
[tests/functional/cli_root/zfs_share:Linux]
-tests = ['zfs_share_005_pos', 'zfs_share_007_neg', 'zfs_share_009_neg',
- 'zfs_share_012_pos', 'zfs_share_013_pos']
+tests = ['zfs_share_005_pos']
tags = ['functional', 'cli_root', 'zfs_share']
-[tests/functional/cli_root/zfs_unshare:Linux]
-tests = ['zfs_unshare_008_pos']
-tags = ['functional', 'cli_root', 'zfs_unshare']
-
-[tests/functional/cli_root/zfs_sysfs:Linux]
-tests = ['zfeature_set_unsupported', 'zfs_get_unsupported',
- 'zfs_set_unsupported', 'zfs_sysfs_live', 'zpool_get_unsupported',
- 'zpool_set_unsupported']
-tags = ['functional', 'cli_root', 'zfs_sysfs']
-
-[tests/functional/cli_root/zpool_add:Linux]
-tests = ['add_nested_replacing_spare']
-tags = ['functional', 'cli_root', 'zpool_add']
-
-[tests/functional/cli_root/zpool_expand:Linux]
-tests = ['zpool_expand_001_pos', 'zpool_expand_002_pos',
- 'zpool_expand_003_neg', 'zpool_expand_004_pos', 'zpool_expand_005_pos']
-tags = ['functional', 'cli_root', 'zpool_expand']
-
-[tests/functional/cli_root/zpool_import:Linux]
-tests = ['zpool_import_hostid_changed',
- 'zpool_import_hostid_changed_unclean_export',
- 'zpool_import_hostid_changed_cachefile',
- 'zpool_import_hostid_changed_cachefile_unclean_export']
-tags = ['functional', 'cli_root', 'zpool_import']
-
-[tests/functional/cli_root/zpool_reopen:Linux]
-tests = ['zpool_reopen_001_pos', 'zpool_reopen_002_pos',
- 'zpool_reopen_003_pos', 'zpool_reopen_004_pos', 'zpool_reopen_005_pos',
- 'zpool_reopen_006_neg', 'zpool_reopen_007_pos']
-tags = ['functional', 'cli_root', 'zpool_reopen']
-
-[tests/functional/cli_root/zpool_split:Linux]
-tests = ['zpool_split_wholedisk']
-tags = ['functional', 'cli_root', 'zpool_split']
-
-[tests/functional/compression:Linux]
-tests = ['compress_004_pos']
-tags = ['functional', 'compression']
-
-[tests/functional/devices:Linux]
-tests = ['devices_001_pos', 'devices_002_neg', 'devices_003_pos']
-tags = ['functional', 'devices']
-
-[tests/functional/events:Linux]
-tests = ['events_001_pos', 'events_002_pos', 'zed_rc_filter', 'zed_fd_spill',
- 'zed_cksum_reported', 'zed_cksum_config', 'zed_io_config',
- 'zed_slow_io', 'zed_slow_io_many_vdevs']
-tags = ['functional', 'events']
-
-[tests/functional/fadvise:Linux]
-tests = ['fadvise_sequential']
-tags = ['functional', 'fadvise']
-
-[tests/functional/fallocate:Linux]
-tests = ['fallocate_prealloc', 'fallocate_zero-range']
-tags = ['functional', 'fallocate']
-
-[tests/functional/fault:Linux]
-tests = ['auto_offline_001_pos', 'auto_online_001_pos', 'auto_online_002_pos',
- 'auto_replace_001_pos', 'auto_replace_002_pos', 'auto_spare_001_pos',
- 'auto_spare_002_pos', 'auto_spare_multiple', 'auto_spare_ashift',
- 'auto_spare_shared', 'decrypt_fault', 'decompress_fault',
- 'scrub_after_resilver', 'zpool_status_-s']
-tags = ['functional', 'fault']
-
-[tests/functional/features/large_dnode:Linux]
-tests = ['large_dnode_002_pos', 'large_dnode_006_pos', 'large_dnode_008_pos']
-tags = ['functional', 'features', 'large_dnode']
-
-[tests/functional/io:Linux]
-tests = ['libaio', 'io_uring']
-tags = ['functional', 'io']
-
-[tests/functional/largest_pool:Linux]
-tests = ['largest_pool_001_pos']
-pre =
-post =
-tags = ['functional', 'largest_pool']
-
-[tests/functional/mmap:Linux]
-tests = ['mmap_libaio_001_pos', 'mmap_sync_001_pos']
-tags = ['functional', 'mmap']
-
-[tests/functional/mmp:Linux]
-tests = ['mmp_on_thread', 'mmp_on_uberblocks', 'mmp_on_off', 'mmp_interval',
- 'mmp_active_import', 'mmp_inactive_import', 'mmp_exported_import',
- 'mmp_write_uberblocks', 'mmp_reset_interval', 'multihost_history',
- 'mmp_on_zdb', 'mmp_write_distribution', 'mmp_hostid']
-tags = ['functional', 'mmp']
-
-[tests/functional/mount:Linux]
-tests = ['umount_unlinked_drain']
-tags = ['functional', 'mount']
-
-[tests/functional/pam:Linux]
-tests = ['pam_basic', 'pam_change_unmounted', 'pam_nounmount', 'pam_recursive',
- 'pam_short_password']
-tags = ['functional', 'pam']
-
-[tests/functional/procfs:Linux]
-tests = ['procfs_list_basic', 'procfs_list_concurrent_readers',
- 'procfs_list_stale_read', 'pool_state']
-tags = ['functional', 'procfs']
-
-[tests/functional/projectquota:Linux]
-tests = ['projectid_001_pos', 'projectid_002_pos', 'projectid_003_pos',
- 'projectquota_001_pos', 'projectquota_002_pos', 'projectquota_003_pos',
- 'projectquota_004_neg', 'projectquota_005_pos', 'projectquota_006_pos',
- 'projectquota_007_pos', 'projectquota_008_pos', 'projectquota_009_pos',
- 'projectspace_001_pos', 'projectspace_002_pos', 'projectspace_003_pos',
- 'projectspace_004_pos',
- 'projecttree_001_pos', 'projecttree_002_pos', 'projecttree_003_neg']
-tags = ['functional', 'projectquota']
-
-[tests/functional/dos_attributes:Linux]
-tests = ['read_dos_attrs_001', 'write_dos_attrs_001']
-tags = ['functional', 'dos_attributes']
-
-[tests/functional/renameat2:Linux]
-tests = ['renameat2_noreplace', 'renameat2_exchange', 'renameat2_whiteout']
-tags = ['functional', 'renameat2']
-
-[tests/functional/rsend:Linux]
-tests = ['send_realloc_dnode_size', 'send_encrypted_files']
-tags = ['functional', 'rsend']
-
-[tests/functional/simd:Linux]
-pre =
-post =
-tests = ['simd_supported']
-tags = ['functional', 'simd']
-
-[tests/functional/snapshot:Linux]
-tests = ['snapshot_015_pos', 'snapshot_016_pos']
-tags = ['functional', 'snapshot']
-
-[tests/functional/tmpfile:Linux]
-tests = ['tmpfile_001_pos', 'tmpfile_002_pos', 'tmpfile_003_pos',
- 'tmpfile_stat_mode']
-tags = ['functional', 'tmpfile']
-
-[tests/functional/upgrade:Linux]
-tests = ['upgrade_projectquota_001_pos']
-tags = ['functional', 'upgrade']
-
-[tests/functional/user_namespace:Linux]
-tests = ['user_namespace_001', 'user_namespace_002', 'user_namespace_003',
- 'user_namespace_004']
-tags = ['functional', 'user_namespace']
-
-[tests/functional/userquota:Linux]
-tests = ['groupspace_001_pos', 'groupspace_002_pos', 'groupspace_003_pos',
- 'userquota_013_pos', 'userspace_003_pos']
-tags = ['functional', 'userquota']
-
-[tests/functional/zvol/zvol_misc:Linux]
-tests = ['zvol_misc_fua']
-tags = ['functional', 'zvol', 'zvol_misc']
+# [tests/functional/mmp:Linux]
+# tests = ['mmp_active_import']
+# tags = ['functional', 'mmp']
-[tests/functional/idmap_mount:Linux]
-tests = ['idmap_mount_001', 'idmap_mount_002', 'idmap_mount_003',
- 'idmap_mount_004', 'idmap_mount_005']
-tags = ['functional', 'idmap_mount']
diff --git a/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_005_pos.ksh b/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_005_pos.ksh
index 85854085f560..54736b6e1b4f 100755
--- a/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_005_pos.ksh
+++ b/tests/zfs-tests/tests/functional/cli_root/zfs_share/zfs_share_005_pos.ksh
@@ -67,6 +67,7 @@ log_onexit cleanup
cleanup
+
typeset -i i=0
while (( i < ${#shareopts[*]} ))
do
@@ -82,6 +83,10 @@ do
IFS=',' read -r _ option _ <<<"$option"
fi
+ log_note "exportfs: $(exportfs -v), $(ls -l /usr/sbin/exportfs)"
+ log_note "$(service nfs-server status)"
+ log_note "$(mount)"
+
log_must eval "showshares_nfs | grep -q \"$option\""
((i = i + 1))
diff --git a/tests/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh.in b/tests/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh.in
index 7fa14161a538..84c2b89e3014 100755
--- a/tests/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh.in
+++ b/tests/zfs-tests/tests/functional/pyzfs/pyzfs_unittest.ksh.in
@@ -34,8 +34,14 @@ fi
verify_runnable "global"
log_assert "Verify the nvlist and libzfs_core Python unittest run successfully"
+echo -e "import sys\nprint (sys.path)" > /tmp/file.py
+log_note "$(/usr/bin/python3.9 /tmp/file.py)"
+log_not "$(env)"
+
+
# log_must buffers stderr, which interacts badly with
# no-output timeouts on CI runners
+log_note "Python is "@PYTHON@
@PYTHON@ -m unittest --verbose \
libzfs_core.test.test_nvlist.TestNVList \
libzfs_core.test.test_libzfs_core.ZFSTest ||