tools/xkvm: add -nographic to speed up devopt query
On systems which include qemu graphical components the time
needed to invoke qemu for querying if an string is a device
option can take many seconds, especially over remote connections.
Adding the '-nographic' parameter prevents qemu from loading
and launching additional resources that are not needed to determine
the devopt query answer.
storage_config: interpret value, not presence, of DM_MULTIPATH_DEVICE_PATH
Curtin assumes any block device that has the DM_MULTIPATH_DEVICE_PATH
key set in udev is a block device, but that's not correct. Since
multipath-tools 0.7.7 (according to https://www.spinics.net/lists/dm-devel/msg35965.html), _every_ block
device that multipathd looks at gets that key set, but it is set to "1"
for things that are part of a multipathed device and "0" for things that
are not. So fix the checks in curtin to follow that.
block-schema: update raid schema for preserve and metadata
Curtin can now accept type: raid storage config which sets the
'preserve' boolean to 'true' which informs curtin that it does
not need to create a new raid device.
We also accept a 'metadata' version hint in the schema as curtin
passes this value along as info to users of block-discover.
DASD devices use a 'vtoc' partition table type. It is similar to DOS
but it is not in MS-DOS format. Adjust this value to 'vtoc' in docs,
block schema and the example config for vmtest.
clear-holders: increase the level for devices with holders by one
In the case where clear-holders looks at a dependent device, if the
parent is already in the registry, we want to take the max level
and then increment this by one to ensure the dependent device is
shutdown first. This resolves the case where we have an LVM over
top a bcache device and we need to remove the LVM device before
any of the bcache devices can be removed as they may share a
cacheset in which case all bcache devices must be stopped before
the cacheset can be removed.
tests: mock timestamp used in collect-log file creation
The unittest for curtin collect-logs uses a timestamp to
create the filename for the tarball. The selected in the
unittest versus when the call occurs may race if the delay
between the calls is greater than 1 second. Resolve this
unittest issue by providing the same timestamp value.
ChrootableTarget: mount /run to resolve lvm/mdadm issues which require it.
Newer lvm/mdadm/grub tools are expecting to find udev and other
information /run, so remove the Centos only change to add /run
and instead have ChrootableTarget always mount /run.
Update block-discover to annotate disks and partitions that are
part of a multipath device. Using probed data, curtin now
includes a 'multipath' key in type:disk and type:partition entries.
This allows readers of extracted config to understand the
duplicated information present.
Other changes:
- Update block schema to accept 'multipath' string
- Update documentation for storage 'multipath' string
- Update block-discover-to-config tool to handle probe data
without 'storage' top level key.
- Add unittests for multipath detection in probe data.