chiark / gitweb /
finalise changelog
[autopkgtest.git] / xen / with-testbed
1 #!/bin/bash
2 set -e
3
4 trap 'exit 127' 0
5 adt_readconfig_needlock=y
6 . ${ADT_XENLVM_SHARE:=/usr/share/autopkgtest/xenlvm}/justconfig
7 while test $# -gt $nonoptargs; do shift; done
8
9 if ! test -f "$adt_play/good"; then
10         echo >&2 'testbed not in good state'
11         exit 127
12 fi
13
14 ${ADT_XENLVM_SHARE}/cleanup >/dev/null
15
16 modprobe dm-snapshot >/dev/null 2>&1 ||:
17
18 for fs in fs swap; do
19  swap=${fs#fs}; eval "
20   bdsize=\$(blockdev --getsize \$lvm_baselv_${swap}namepath)
21   dmsetup create \$adt_devmapper_${swap}cowdev <<END
22 0 \$bdsize snapshot \$lvm_baselv_${swap}namepath \$lvm_cowdata_${swap}namepath n \$adt_${fs}_cowchunk
23 END
24
25   mkdir -p \$lvm_${fs}link_dirpath
26   ln -s \$lvm_${swap}snapdev \$lvm_${fs}link_ptr
27  "
28 done
29
30 xm restore $adt_play/xen-save
31 xm mem-set $adt_xmname $adt_testbed_ram
32 udevsettle
33
34 unset ADT_LOCKED
35
36 set +e
37 case $# in
38 0) debian_chroot="<with-adtxenlvm_$adt_nominum>$debian_chroot" $SHELL -i ;;
39 *) "$@" ;;
40 esac
41 rc=$?
42 set -e
43
44 xm destroy $adt_xmname
45
46 sleep 1
47 # ... this helps races where xm destroy leaves network interfaces etc.
48 #     still enabled
49
50 sleep=0
51 while true; do
52         if dmsetup remove $adt_devmapper_cowdev; then break; fi
53         if [ $sleep -gt 3 ]; then fail "dmsetup remove kept failing"; fi
54         sleep $sleep
55         sleep=$(( $sleep + 1 ))
56 done
57
58 trap '' 0
59 exit $rc