Curtin extracts the devices from storage config with wipe enabled.
These devices may not exist yet (curtin will be creating them) so
there's no need to clear them, instead drop them from the list of
devices to send to clear-holders.
Other changes:
multipath:
- Clarify multipath logging on device type checking
block-meta:
- Stop iterating through disk lookup keys after we find one
- Use udevadm_settle after parted partition creation before
calling kpartx to prevent race with kernel partition update
clear-holders:
- Log the inputs to clear-holders
block:
- Log a warning when sys_block_path is called on a non-existent
device path.
- Log the return value from block.lookup_disk()
curthooks: support multiple ESP on UEFI bootable systems
On debian systems we generate and set debconf selections values
to tell grub the set of configured devices. Also refactor
setup_grub to extract all UEFI boot partitions and determine
the primary ESP (mounted at /boot/efi). We include all ESPs
in the debconf selection for grub-[multi]-install to use.
The grub-efi/install_devices is a new template value used for
handling multiple ESP partitions for boot resilience.
Curtin will check for the grub-multi-install tool and if
present will invoke that tool to install grub to all ESPs.
- Add block.schema update to allow partitions to set
grub_device: True
- Refactor finding ESPs to prefer partition with grub_device,
ESPs on disks with grub_device and fallback to grubcfg
install_devices if we don't find one in storage config.
block-discover: handle missing multipath 'path' data, use DM_NAME
Probert's multipath data (maps and paths) is not always complete.
In some systems, the paths output may not include the required
mpath friendly name and instead use a serial number. In such
cases we can also check DM_NAME in the multipath device udev data
to extract the multipath_id that we can use to search for a member
device.
lvm-over-multipath: handle lookups of multipath members
Subiquity provides a 'path' value for disks in storage config.
This triggered an edge case where curtin attempted to wipe the
underlying scsi disk *while* multipath is enabled resulting in
an error when attempting to get exclusive access to the disk.
This branch resolves this by checking if a disk or partition
is related to multipath and if so returning the device mapper
disk path.
block-meta: don't filter preserve=true devices, select by wipe
Now that wiping and preserving are independent values we consider
any disk or partition with a wipe setting for clearing holders.
An existing scenario where this matters is reusing a partition
which was previously part of a volume-group.
- Add a simplified vmtest scenario for reusing partition that
was previously part of a volume-group
vmtest: basic use dname to lookup disk with multiple partitions
This handles unstable scsi device names (sdc/sdd) which shuffle around
from time to time; instead look up the assigned name via the dname
value. This should fix vmtest failures on BasicScsi on ppc64le/arm64.