chiark / gitweb /
: ${:=} not ${:=}
[autopkgtest.git] / xen / with-testbed
index 32c831152cb6e135f54431183949935457a61f3e..75c15398d84e944fca82886627d7abe31953fdae 100755 (executable)
@@ -2,25 +2,37 @@
 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 2>&1 ||:
+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
+for fs in fs swap; do
+ swap=${fs#fs}; eval "
+  bdsize=\$(blockdev --getsize \$lvm_baselv_${swap}namepath)
+  dmsetup create \$adt_devmapper_${swap}cowdev <<END
+0 \$bdsize snapshot \$lvm_baselv_${swap}namepath \$lvm_cowdata_${swap}namepath n \$adt_${fs}_cowchunk
 END
 
-mkdir -p $lvm_fslink_dirpath
-ln -s $lvm_snapdev $lvm_fslink_ptr
+  mkdir -p \$lvm_${fs}link_dirpath
+  ln -s \$lvm_${swap}snapdev \$lvm_${fs}link_ptr
+ "
+done
 
 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 ;;
@@ -30,6 +42,11 @@ rc=$?
 set -e
 
 xm destroy $adt_xmname
+
+sleep 1
+# ... this helps races where xm destroy leaves network interfaces etc.
+#     still enabled
+
 sleep=0
 while true; do
        if dmsetup remove $adt_devmapper_cowdev; then break; fi