#!/bin/bash
set -e

trap 'exit 127' 0
adt_readconfig_needlock=y
. ${ADT_XENLVM_SHARE:=/usr/share/autopkgtest/xenlvm}/justconfig
while test $# -gt $nonoptargs; do shift; done

if ! test -f "$adt_play/good"; then
	echo >&2 'testbed not in good state'
	exit 127
fi

${ADT_XENLVM_SHARE}/cleanup >/dev/null

modprobe dm-snapshot >/dev/null 2>&1 ||:

bdsize=$(blockdev --getsize $lvm_baselv_namepath)
dmsetup create $adt_devmapper_cowdev <<END
0 $bdsize snapshot $lvm_baselv_namepath $lvm_cowdata_namepath n $adt_fs_cowchunk
END

mkdir -p $lvm_fslink_dirpath
ln -s $lvm_snapdev $lvm_fslink_ptr

xm restore $adt_play/xen-save
xm mem-set $adt_xmname $adt_testbed_ram
udevsettle

unset ADT_LOCKED

set +e
case $# in
0) debian_chroot="<with-adtxenlvm_$adt_nominum>$debian_chroot" $SHELL -i ;;
*) "$@" ;;
esac
rc=$?
set -e

xm destroy $adt_xmname
sleep=0
while true; do
	if dmsetup remove $adt_devmapper_cowdev; then break; fi
	if [ $sleep -gt 3 ]; then fail "dmsetup remove kept failing"; fi
	sleep $sleep
	sleep=$(( $sleep + 1 ))
done

trap '' 0
exit $rc
