Date: Tue, 15 Aug 2023 19:37:45 +0200 From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= <des@FreeBSD.org> To: current@freebsd.org Subject: Re: ZFS deadlock in 14 Message-ID: <86pm3op5p2.fsf@ltc.des.no> In-Reply-To: <86350kqokl.fsf@ltc.des.no> ("Dag-Erling =?utf-8?Q?Sm=C3=B8rg?= =?utf-8?Q?rav=22's?= message of "Tue, 15 Aug 2023 18:04:42 %2B0200") References: <86leeltqcb.fsf@ltc.des.no> <86h6p4s64h.fsf@ltc.des.no> <86a5utrafp.fsf@ltc.des.no> <86350kqokl.fsf@ltc.des.no>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
The attached script successfully deadlocks 9228ac3a69c4.
DES
--
Dag-Erling Smørgrav - des@FreeBSD.org
[-- Attachment #2 --]
#!/bin/sh
: ${n:=$(nproc)}
: ${pool:=zroot}
basefs="${pool}/zfsdl"
set -eu
zfs destroy -r "${basefs}" >/dev/null 2>&1 || true
zfs create -o com.sun:auto-snapshot=false "${basefs}"
basedir="$(zfs get -H -o value mountpoint "${basefs}")"
echo "preparing tarball..." >&2
tarball="${basedir}/zfsdl.tar"
mkdir "${basedir}/src"
(cd /usr/src ; find * -type d) | (cd "${basedir}/src" ; xargs mkdir -p)
(cd /usr/src ; find * -type f) | (cd "${basedir}/src" ; xargs touch)
tar cf "${tarball}" -C "${basedir}" src
zfs_deadlock() {
local fs=$1 dir
zfs create "${fs}"
dir="$(zfs get -H -o value mountpoint "${fs}")"
zfs snapshot "${fs}@empty"
while ! [ -f "${basedir}/stop" ] ; do
echo "fill ${fs}..." >&2
tar xf "${tarball}" -C "${dir}"
echo "rollback ${fs}..." >&2
zfs rollback -rR "${fs}@empty"
done
}
for i in $(seq -w "${n}") ; do
zfs_deadlock "${basefs}/${i}" &
sleep 1
done
wait
echo "stop" >&2
zfs destroy -r "${basefs}"
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86pm3op5p2.fsf>
