sled agent: add facility to set/clear instances' migration IDs #2862
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is PR no. 6 in the live migration series. The work in this PR will be used in the next PR in this sequence.
Add a sled agent API that allows Nexus to set or clear the migration ID and destination Propolis ID in an instance's runtime state. This advances the instance's Propolis generation number.
Sled agent requires callers to furnish the instance runtime state they intend to transition from. This lets Nexus use this API and an instance's migration ID field to arbitrate between multiple concurrent migration attempts: if an instance is running with Propolis generation X, and two (or more) migration sagas observe that generation, then only one will successfully set migration IDs and be allowed to continue migration.
Subsequent commits will update the migration saga to use this API.