vmtest: collection of vmtest related fixes to make things triple green
- Convert a number of fstab_expected values to
get_fstab_expected functions
- Handle raid partition lsblk type variance (md or part)
- Add logging to volspec calculation
- Handle lvm DM_NAME escaping by querying udev
- Fix "apt" error code which was result of rootfs too full on
bcache-ceph-nvme-simple Focal scenario
- Skip iscsi disk cleanup when using VMTEST_REUSE_TOPDIR=1
to rerun unittests over collected data
clear-holders: umap the parent mpath to wipe the underlying partitions
In some multipath scenarios access to the underlying partitions is
not possible without removing the parent multipath mapping. This can
only be done if all of the mpath partitions have been unmapped.
Detect when this is the case and remove the parent mpath mapping
as well. This fixes vmtest failures found with test_multipath.py
vmtests: bump fixby date out and fix false positive when date passes
The fix for vlan is still pending, however we've observed a false
positive where vmtest would indicate that the test was passing when
it actually was not. This is because skip_by_date will run the
decorated function *after* the fixby date has passed. The
implementation was 'pass' which does pass but did not actually run
the test case.
clear-holders: ensure we wipe device even if multipath enabled not not mp
On Ubuntu releases where multipath is enabled but not in-use some devices
would fail to be wiped due to logic bug. This was found in the
BcacheBasic test. Refactor this logic to ensure that we wipe either
the in-use multipath dm device or the block device value originally
supplied to the wipe function.
block_meta: use reliable fs_spec entries for block devices
Entries in /etc/fstab currently use UUID= in almost all cases. This
is not reliable in the face of LVM snapshots, multipath, and other
scenarios where multiple block devices may have the same UUID values.
Resolve this by following the recommendations in the Ubuntu Wiki[1]
where we will use specific udev persistent block paths which embed
a *device* uuid in the path (dm-uuid, md-uuid, etc). In addition
to modifying the fs_spec value we write, also include a comment
above each entry which includes a terse device path which may help
users recogize a disk where a UUID will not. This brings curtin
to parity with other Ubuntu installers which include:
# /mnt was mounted on /dev/sdb1 during installation
multipath: handle removal of multipath partitions correctly
Curtin could handle multipath-partition removal if it was given
the device-mapper device (dm-x) however, if it was fed the
underying scsi device (e.g. sda2) this would fail when curtin
would try to clear the partition requesting exclusive access
which it could not obtain due to the device-mapper device.
This branch implements a kernel scsi device lookup to map
sdXN -> dm-N mapping which resolves the issue by allowing
curtin to wipe the dm-X device even if it has been
provided the sdXN device.
Additional Changes
- Enable dirty_disk mode on multipath test to reproduce
failure