Highlights
This release makes the PCI address the identity of every pool device and gives devices stable names through standard device tree /aliases. It also follows the kernel's move to the devicetree PCI bus binding, which puts devices under their host bridge. With these changes, the name you give kerf init is the name kerf create, kerf update, kerf show and kerf dump all accept and report.
Device identity and aliases
- Key each pool device by its PCI address, with the node named
pci_DDDD_BB_SS_Fas the kernel derives it - Name devices through
/aliases: an NVMe keeps its controller name, a network device keeps its interface name, and=aliasoverrides either - Pooling a partition pools the whole controller, and kerf says so
create,updateand the validator accept an alias, a PCI address in any case, or a node namekerf showprints each device's alias
kerf create
- Assign devices by PCI address against the live pool, as
updatedoes. Devices pooled after the firstkerf initnow work instead of failing with "not found in base DTB" - Resolve
--deviceswhen the operation runs, so an unknown device fails before the overlay is built rather than passing--dry-runsilently --verbosereports the new instance from its own device tree instead of crashing with a KeyError
kerf update
- Read an instance's devices from its tree with the parser, so devices can be taken back again;
nonetakes every device back - Resolve
--devicesby alias, PCI address or node name against the pool plus what the instance holds
kerf init
- Resolve a block device to its own PCI function, not a bridge above it
- Take a device already in the pool from the live tree, so re-running
kerf initwith the same--devicessucceeds - Count devices lent to instances as pool members; a device the request omits stays with its instance and is reported rather than moved
kerf kill
- Point at
--forcewhen a graceful halt times out
Parser
- Read pool and instance PCI devices from under their host bridge
- Take the instance name from the standard
modelproperty; a tree without one is a pool dump, not an instance - Tolerate
/aliasesand host-bridge nodes in a dumped instance
Cleanups
- Remove boot time measurement and the rdtsc dependency
- Clean up pylint findings in models and tests
Full Changelog: v0.2.0...v0.3.0