check_result_qemu() {
ret=1
- mkdir -p $initdir
- mount ${LOOPDEV}p1 $initdir
+ mount_initdir
[[ -e $initdir/testok ]] && ret=0
[[ -f $initdir/failed ]] && cp -a $initdir/failed $TESTDIR
cryptsetup luksOpen ${LOOPDEV}p2 varcrypt <$TESTDIR/keyfile
mount /dev/mapper/varcrypt $initdir/var
cp -a $initdir/var/log/journal $TESTDIR
rm -r $initdir/var/log/journal/*
- umount $initdir/var
- umount $initdir
+ _umount_dir $initdir/var
+ _umount_dir $initdir
cryptsetup luksClose /dev/mapper/varcrypt
[[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed
ls -l $TESTDIR/journal/*/*.journal
QEMU_MEM="${QEMU_MEM:-512M}"
IMAGE_NAME=${IMAGE_NAME:-default}
TEST_REQUIRE_INSTALL_TESTS="${TEST_REQUIRE_INSTALL_TESTS:-1}"
+LOOPDEV=
# Decide if we can (and want to) run QEMU with KVM acceleration.
# Check if nested KVM is explicitly enabled (TEST_NESTED_KVM). If not,
find_qemu_bin || return 1
# Umount initdir to avoid concurrent access to the filesystem
- umount_initdir
+ _umount_dir $initdir
local _cgroup_args
if [[ "$UNIFIED_CGROUP_HIERARCHY" = "yes" ]]; then
done
}
+cleanup_loopdev() {
+ if [ -n "${LOOPDEV}" ]; then
+ ddebug "losetup -d $LOOPDEV"
+ losetup -d "${LOOPDEV}"
+ fi
+}
+
+trap cleanup_loopdev EXIT
+
create_empty_image() {
if [ -z "$IMAGE_NAME" ]; then
echo "create_empty_image: \$IMAGE_NAME not set"
LOOPDEV=$(losetup --show -P -f "$public")
[ -b "$LOOPDEV" ] || return 1
- echo "LOOPDEV=$LOOPDEV" >>$STATEFILE
sfdisk "$LOOPDEV" <<EOF
,$((_size-50))M
,
local _label="-L systemd.${name}"
# mkfs.reiserfs doesn't know -L. so, use --label instead
[[ "$FSTYPE" == "reiserfs" ]] && _label="--label systemd.${name}"
- if ! mkfs -t "${FSTYPE}" ${_label} "${LOOPDEV}p1" -q; then
+ mkfs -t "${FSTYPE}" ${_label} "${LOOPDEV}p1" -q; ret=$?
+ if [ $ret -ne 0 ] ; then
dfatal "Failed to mkfs -t ${FSTYPE}"
exit 1
fi
image="${IMAGESTATEDIR}/${IMAGE_NAME}.img"
LOOPDEV=$(losetup --show -P -f "$image")
[ -b "$LOOPDEV" ] || return 1
- echo "LOOPDEV=$LOOPDEV" >>$STATEFILE
- fi
- mkdir -p $initdir
- mount ${LOOPDEV}p1 $initdir
- TEST_SETUP_CLEANUP_ROOTDIR=1
-}
+ udevadm settle
+ fi
-umount_initdir() {
- _umount_dir $initdir
- if [[ $LOOPDEV && -b $LOOPDEV ]]; then
- ddebug "losetup -d $LOOPDEV"
- losetup -d $LOOPDEV
+ if ! mountpoint -q $initdir; then
+ mkdir -p $initdir
+ mount ${LOOPDEV}p1 $initdir
+ TEST_SETUP_CLEANUP_ROOTDIR=1
fi
- LOOPDEV=
- sed -i /LOOPDEV=/d $STATEFILE
}
cleanup_initdir() {
test -s $TESTDIR/failed && ret=$(($ret+1))
[ -n "$TIMED_OUT" ] && ret=$(($ret+1))
check_asan_reports "$1" || ret=$(($ret+1))
- umount_initdir
+ _umount_dir $initdir
return $ret
}
cp -a $initdir/var/log/journal $TESTDIR
rm -r $initdir/var/log/journal/*
check_asan_reports "$initdir" || ret=$(($ret+1))
- umount $initdir
+ _umount_dir $initdir
[[ -f $TESTDIR/failed ]] && cat $TESTDIR/failed
ls -l $TESTDIR/journal/*/*.journal
test -s $TESTDIR/failed && ret=$(($ret+1))
}
import_testdir() {
+ # make sure we don't get a stale LOOPDEV value from old times
+ __LOOPDEV=$LOOPDEV
[[ -e $STATEFILE ]] && . $STATEFILE
+ LOOPDEV=$__LOOPDEV
if [[ ! -d "$TESTDIR" ]]; then
if [[ -z "$TESTDIR" ]]; then
TESTDIR=$(mktemp --tmpdir=/var/tmp -d -t systemd-test.XXXXXX)
cat >$STATEFILE<<EOF
TESTDIR="$TESTDIR"
-LOOPDEV="$LOOPDEV"
EOF
export TESTDIR
fi
# (post-test) cleanup should always ignore failure and cleanup as much as possible
(
set +e
- umount_initdir
+ _umount_dir $initdir
rm -vf "${IMAGESTATEDIR}/${IMAGE_NAME}.img"
rm -vfr "$TESTDIR"
rm -vf "$STATEFILE"
test_cleanup_again() {
[ -n "$TESTDIR" ] || return
rm -rf "$TESTDIR/unprivileged-nspawn-root"
- umount_initdir
+ _umount_dir $initdir
}
test_create_image() {