-autopkgtest (1.1.1~) unstable; urgency=low
+autopkgtest (1.2.0~) unstable; urgency=low
- * adt-xenlvm-setup: new hooks for xmdomain config file.
+ * remove spurious mkdir of empty variable $snap.
+ * adt-xenlvm-*: support for swap, defaulting to 5G.
+ This will break existing setups with insufficient LVM space.
* hosts/cadmium/update-suppression: really do not install empty file.
+ * adt-xenlvm-*: allow specification of LVM PVs to use.
+ * adt-xenlvm-setup: new hooks for xmdomain config file.
* allow suppresspackages and blacklist lists to contain more
information after some whitespace
* adt-openbugs-*: new machinery works with debbugs
adt_fs_cowchunk 8 [Mby]
Copy-on-write chunk size.
+adt_swap_size 5120M
+ Swapspace to provide to guests. This is done with
+ copy-on-write just as for the filesystems. The snapshot area
+ is (necessarily) the same size as the swapspace itself.
+
+adt_swap_cowchunk <fs_cowchunk>
+ Copy-on-write chunk size for swap area.
+
adt_vm_reduce_retries 10 [seconds]
Time to wait for VM to reduce its memory following
xm mem-set.
it will be separated by other parts by underscores `_', so
they should be avoided.
+adt_lvm_swapvg <lvm_vg>
+ VG to use for guest's swap.
+
+adt_lvm_eraseswap <lvm_erasebase>
+ Whether the base swap image needs to be filled with zeroes.
+
+adt_lvm_pv_fsbase <none>
+adt_lvm_pv_fssnap <none>
+adt_lvm_pv_swapbase <none>
+adt_lvm_pv_swapsnap <none>
+ Specifies specific LVM PVs to use. The default is to leave it
+ up to lvcreate.
+
adt_guest_macaddr 00:16:3e:7c:aa:7f
adt_net_vifscript /etc/xen/scripts/vif-route-adt
adt_lvm_baselv <nominum>_<distro>_base
adt_lvm_cowdatalv <nominum>_<distro>_cowdata
+adt_lvm_snapbaselv <nominum>_<distro>_swapbase
+adt_lvm_snapcowdatalv <nominum>_<distro>_swapcowdata
LVM volume for base filesystem image, and copy-on-write
buffer. Will be created during testbed setup, destroying any
previous volume if necessary. This is the logical volume name
not including /dev/<lvm_vg>.
-adt_devmapper_cowdev <nominum>_<distro>_snap
+adt_devmapper_cowdev <nominum>_<distro>_snap
+adt_devmapper_swapcowdev <nominum>_<distro>_swapsnap
devmapper device for copy-on-write image used by testbed when
running. This is the device name in the devmapper namespace,
ie not including /dev/mapper.
adt_fslink_dir adt-xenlvm
+adt_swaplink_dir adt-xenlvm
adt_fslink_name <nominum>_<distro>_fs
+adt_swaplink_name <nominum>_<distro>_swap
Directory in /dev, and filename in that directory, where the
scripts put the symlink used to trick Xen into using a
different block device on resume than was used for creation.
. ${ADT_XENLVM_SHARE:=/usr/share/autopkgtest/xenlvm}/readconfig
test $nonoptargs = 0 || fail "non-option arguments not allowed"
-mkdir -p $adt_play $snap
+mkdir -p $adt_play
try_es () { printf "%s\n" "- $*"; "$@" >/dev/null 2>&1; }
try () { try_es "$@" ||:; }
n=0
try xm destroy $adt_xmname 2>/dev/null
try umount $lvm_baselv_namepath
-sleeptime=0
-while try_es dmsetup info $adt_devmapper_cowdev; do
- try dmsetup remove $adt_devmapper_cowdev
- [ $sleeptime -le 5 ] || fail "timed out trying dmsetup info/remove"
- sleep $sleeptime
- sleeptime=$(( $sleeptime + 1 ))
+for fs in fs swap; do
+ swap=${fs#fs}; eval "
+ sleeptime=0
+ while try_es dmsetup info \$adt_devmapper_${swap}cowdev; do
+ try dmsetup remove \$adt_devmapper_${swap}cowdev
+ [ \$sleeptime -le 5 ] || \
+ fail "timed out trying dmsetup info/remove ${swap}"
+ sleep \$sleeptime
+ sleeptime=\$(( \$sleeptime + 1 ))
+ done
+ "
done
-rm -f $lvm_fslink_ptr
+rm -f $lvm_fslink_ptr $lvm_swaplink_ptr
chroot $dest root/fixups-inside \
"$adt_host_hostname" "$adt_guest_hostname" \
"$adt_host_ipaddr" "$adt_guest_ipaddr" \
- "$adt_fs_type" "$adt_normaluser"
+ "$adt_fs_type" "$adt_normaluser" \
+ "$provideswap"
kh=/etc/ssh/ssh_known_hosts
test ! -f $kh || cp $kh $kh.new
adt_guest_ipaddr=$4
adt_fs_type=$5
adt_normaluser=$6
+adt_provideswap=$7
echo '(---'
/dev/hda1 / $adt_fs_type defaults,errors=remount-ro 0 1
END
+if $adt_provideswap; then
+ cat >>/etc/fstab <<END
+/dev/hda2 none swap sw 0 0
+END
+fi
+
mkdir -p /etc/network
cat >/etc/network/interfaces <<END
auto lo
rm -f $adt_play/good
$ADT_XENLVM_SHARE/cleanup "$@"
-xl lvchange -a n $lvm_baselv_namepath ||:
-xl lvchange -a n $lvm_cowdata_namepath ||:
-xl lvremove $lvm_baselv_namepath ||:
-xl lvremove $lvm_cowdata_namepath ||:
+for fs in fs swap; do
+ swap=${fs#fs}; eval "
+ xl lvchange -a n \$lvm_baselv_${swap}namepath ||:
+ xl lvchange -a n \$lvm_cowdata_${swap}namepath ||:
+ xl lvremove \$lvm_baselv_${swap}namepath ||:
+ xl lvremove \$lvm_cowdata_${swap}namepath ||:
+ "
+done
rm -rf -- "${adt_play}"
: ${adt_fs_size:=6144M}
: ${adt_fs_snapsize:=5120M}
: ${adt_fs_cowchunk:=8}
+: ${adt_swap_size:=5120M}
: ${adt_playbase:=/var/lib/autopkgtest/xenlvm}
: ${adt_fs_type:=ext3}
: ${adt_fs_mkfs_args:=}
# LVM
boolean_config lvm_erasebase true
+
: ${adt_lvm_baselv:=${adt_nominum}_${adt_distro}_base}
: ${adt_lvm_cowdatalv:=${adt_nominum}_${adt_distro}_cowdata}
: ${adt_devmapper_cowdev:=${adt_nominum}_${adt_distro}_snap}
: ${adt_fslink_dir:=adt-xenlvm}
: ${adt_fslink_name:=${adt_nominum}_${adt_distro}_fs}
+# LVM - swap
+: ${adt_lvm_eraseswap:=$adt_lvm_erasebase}
+
+: ${adt_lvm_swapbaselv:=${adt_nominum}_${adt_distro}_swapbase}
+: ${adt_lvm_swapcowdatalv:=${adt_nominum}_${adt_distro}_swapcowdata}
+: ${adt_devmapper_swapcowdev:=${adt_nominum}_${adt_distro}_swapsnap}
+
+: ${adt_swaplink_dir:=adt-xenlvm}
+: ${adt_swaplink_name:=${adt_nominum}_${adt_distro}_swap}
+
+: ${adt_lvm_swapvg:=$adt_lvm_vg}
+
+: ${adt_swap_snapsize:=$adt_swap_size}
+: ${adt_swap_cowchunk:=$adt_fs_cowchunk}
+
+case "$adt_swap_size" in
+*[!0A-Za-z]*) provide_swap=true ;;
+*) provide_swap=false ;;
+esac
+
# Firewall
: ${adt_fw_testbedclients:=${adt_host_ipaddr}}
-lvm_baselv_namerhs=${adt_lvm_vg}/${adt_lvm_baselv}
-lvm_baselv_namepath=/dev/${lvm_baselv_namerhs}
+for fs in fs swap; do swap=${fs#fs}; eval "
+ lvm_baselv_${swap}namerhs=\${adt_lvm_${swap}vg}/\${adt_lvm_${swap}baselv}
+ lvm_baselv_${swap}namepath=/dev/\${lvm_baselv_${swap}namerhs}
-lvm_cowdata_namerhs=${adt_lvm_vg}/${adt_lvm_cowdatalv}
-lvm_cowdata_namepath=/dev/${lvm_cowdata_namerhs}
+ lvm_cowdata_${swap}namerhs=\${adt_lvm_${swap}vg}/\${adt_lvm_${swap}cowdatalv}
+ lvm_cowdata_${swap}namepath=/dev/\${lvm_cowdata_${swap}namerhs}
-lvm_snapdev=/dev/mapper/${adt_devmapper_cowdev}
+ lvm_${swap}snapdev=/dev/mapper/\${adt_devmapper_${swap}cowdev}
-lvm_fslink_ptrrhs=${adt_fslink_dir}/${adt_fslink_name}
-lvm_fslink_dirpath=/dev/${adt_fslink_dir}
-lvm_fslink_ptr=/dev/${adt_fslink_dir}/${adt_fslink_name}
+ lvm_${fs}link_ptrrhs=\${adt_${fs}link_dir}/\${adt_${fs}link_name}
+ lvm_${fs}link_dirpath=/dev/\${adt_${fs}link_dir}
+ lvm_${fs}link_ptr=/dev/\${adt_${fs}link_dir}/\${adt_${fs}link_name}
+ "
+done
echo "adtxenlvm: configuration for read for nominum=${adt_nominum}"
$ADT_XENLVM_SHARE/purge "$@"
-xl lvcreate -L $adt_fs_size -n $adt_lvm_baselv $adt_lvm_vg
-xl lvcreate -L $adt_fs_snapsize -n $adt_lvm_cowdatalv $adt_lvm_vg
-
-if $adt_lvm_erasebase; then
- basesize=`lvdisplay -c $lvm_baselv_namepath 8>&- 3>&-`
- basesize="${basesize#*:*:*:*:*:*:}"
- basesize="${basesize%%:*}"
- x dd if=/dev/zero of=$lvm_baselv_namepath bs=512 count="$basesize"
-fi
+#----- create fs base
+
+lvm_create_base () {
+ xl lvcreate -L $3 -n $2 $1 $4
+ xl lvcreate -L $6 -n $5 $1 $7
+ if $8; then
+ basesize=`lvdisplay -c $9 8>&- 3>&-`
+ basesize="${basesize#*:*:*:*:*:*:}"
+ basesize="${basesize%%:*}"
+ x dd if=/dev/zero of=$9 bs=512 count="$basesize"
+ fi
+}
+
+lvm_create_base $adt_lvm_vg \
+ $adt_lvm_baselv $adt_fs_size $adt_lvm_pv_fsbase \
+ $adt_lvm_cowdatalv $adt_fs_snapsize $adt_lvm_pv_fssnap \
+ $adt_lvm_erasebase $lvm_baselv_namepath
+
x mkfs -t $adt_fs_type $adt_mkfs_args $lvm_baselv_namepath
+#----- create swap base
+
+if $provide_swap; then
+ lvm_create_base $adt_lvm_swapvg \
+ $adt_lvm_swapbaselv $adt_swap_size $adt_lvm_pv_swapbase \
+ $adt_lvm_swapcowdatalv $adt_swap_snapsize $adt_lvm_pv_swapsnap \
+ $adt_lvm_eraseswap $lvm_baselv_swapnamepath
+ x mkswap $lvm_baselv_swapnamepath
+ swapdisk=", \"phy:$lvm_swaplink_ptrrhs,hda2,w\""
+fi
+
+#----- create base filesystem and info
+
mkdir -p $adt_play/base
x mount $lvm_baselv_namepath $adt_play/base
memory = $adt_testbed_ram
root = "/dev/hda1"
extra = "ro console=tty0 $adt_xmhook_extra"
-disk = [ "phy:$lvm_fslink_ptrrhs,hda1,w" $adt_xmhook_disk ]
+disk = [ "phy:$lvm_fslink_ptrrhs,hda1,w"$swapdisk $adt_xmhook_disk ]
vif = [ "bridge=none,mac=$adt_guest_macaddr,ip=${adt_guest_ipaddr},script=${adt_net_vifscript}" $adt_xmhook_vif ]
on_crash = "preserve"
on_reboot = "preserve"
x umount $lvm_baselv_namepath
-mkdir -p ${lvm_fslink_dirpath}
-ln -sf ../$lvm_baselv_namerhs ${lvm_fslink_ptr}
+for fs in fs swap; do
+ swap=${fs#fs}; eval "
+ mkdir -p \${lvm_${fs}link_dirpath}
+ ln -sf ../\$lvm_baselv_${swap}namerhs \${lvm_${fs}link_ptr}
+ "
+done
+
x xm create $adt_xmconfig name=$adt_xmname
retries=10
done
x xm save $adt_xmname $adt_play/xen-save
-rm ${lvm_fslink_ptr}
+rm ${lvm_fslink_ptr} ${lvm_swaplink_ptr}
touch "$adt_play/good"
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