[RFC] feat(snapshot): allow vsock uds path override on restore#5323
[RFC] feat(snapshot): allow vsock uds path override on restore#5323Swchexit wants to merge 2 commits intofirecracker-microvm:mainfrom
Conversation
This commit introduces the ability to override the vsock's backing Unix Domain Socket (UDS) path when restoring a VM from a snapshot. This is useful in scenarios where the original UDS path is not available on the host where the snapshot is being restored, for example when restoring on a different machine. A new `vsock_override` field has been added to the `/snapshot/load` API endpoint to specify the new UDS path. Signed-off-by: Sheng-Wei (Way) Chen <waychensw@gmail.com>
bchalios
left a comment
There was a problem hiding this comment.
The approach LGTM. Could you add tests for this? I'm not sure how easy it would be for you to force the integration tests system to change the UDS path because it is using the jailer, but it'd be nice if we could find a way. At the very least we could add negative tests, e.g. an override when vsock is not present should fail and also unit tests.
|
I'd love to see this landing. If there's anything I can do to help, let me know. |
|
Hi @eduardoboucas, Thank you for your interest in this feature, and apologies for leaving this PR stale for so long! We would be happy to support this feature, we just need some test cases for this (as previously stated). @Swchexit, are you still working on this? If not, feel free to pick this up @eduardoboucas. Thank you for your contributions! |
Support overriding vsock UDS path on snapshot restore (as documented in #3344)
This is an RFC. I’d appreciate your feedback on whether this is a viable direction. If it makes sense, I’m happy to follow up with test coverage and documentation.
Changes
Reason
Currently, Firecracker does not support restoring a VM with a vsock device to a new host or environment if the original uds_path is unavailable or in conflict. This prevents cloning snapshots or running multiple restored instances with configured vsocks on the same host.
While the CID is used to construct guest-side packet headers, it’s the Unix domain socket that routes traffic on the host. Since each VM connects to its own UDS socket, multiple VMs can safely share the same CID as long as they use different socket paths.
This patch proposes a minimal change to enable such use cases by allowing the UDS path to be overridden on restore, without requiring changes to the CID. This resolves the snapshot clone limitation described in issue #3344 and aligns with the vsock man page’s expectations around post-migration reattachment.
License Acceptance
By submitting this pull request, I confirm that my contribution is made under
the terms of the Apache 2.0 license. For more information on following Developer
Certificate of Origin and signing off your commits, please check
CONTRIBUTING.md.PR Checklist
tools/devtool checkbuild --allto verify that the PR passesbuild checks on all supported architectures.
tools/devtool checkstyleto verify that the PR passes theautomated style checks.
how they are solving the problem in a clear and encompassing way.
For docs and new tests, I will finish them it this patch seems reasonable
in the PR.
CHANGELOG.md.Runbook for Firecracker API changes.
integration tests.
TODO.rust-vmm.