firecracker
firecracker copied to clipboard
Restore resource allocators from snapshot
What
Currently the ResourceAllocator is not restored from the snapshot, but its state is rebuilt by replaying allocations with ExactMatch (example).
Why
The current pattern for restoring the state is cumbersome and prone to error. For example, acpi and mptable allocations in the system memory are not replayed, meaning that the allocator state would be different after restore. It works fine for now because we don't allow for changing state after restore, but new features may be impacted by this, like hotplugging.
How
We should serialize its state in the snapshot, as proposed in https://github.com/rust-vmm/vm-allocator/pull/40, and remove the replayed ExactMatch allocations.
Additional Details
- https://github.com/firecracker-microvm/firecracker/pull/5139#discussion_r2059965612