chiark / gitweb /
merge to 1.0.0
[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 bdsize=$(blockdev --getsize $lvm_baselv_namepath)
19 dmsetup create $adt_devmapper_cowdev <<END
20 0 $bdsize snapshot $lvm_baselv_namepath $lvm_cowdata_namepath n $adt_fs_cowchunk
21 END
22
23 mkdir -p $lvm_fslink_dirpath
24 ln -s $lvm_snapdev $lvm_fslink_ptr
25
26 xm restore $adt_play/xen-save
27 xm mem-set $adt_xmname $adt_testbed_ram
28 udevsettle
29
30 unset ADT_LOCKED
31
32 set +e
33 case $# in
34 0) debian_chroot="<with-adtxenlvm_$adt_nominum>$debian_chroot" $SHELL -i ;;
35 *) "$@" ;;
36 esac
37 rc=$?
38 set -e
39
40 xm destroy $adt_xmname
41 sleep=0
42 while true; do
43         if dmsetup remove $adt_devmapper_cowdev; then break; fi
44         if [ $sleep -gt 3 ]; then fail "dmsetup remove kept failing"; fi
45         sleep $sleep
46         sleep=$(( $sleep + 1 ))
47 done
48
49 trap '' 0
50 exit $rc