Skip to content

Commit c7d443e

Browse files
committed
snapshot: move snapshot feature to GA
Declare full snapshots as fully supported. Diff snapshots remain in development preview status, as we wait to see how these will play with secret hiding. Signed-off-by: Babis Chalios <[email protected]>
1 parent 6a8347f commit c7d443e

File tree

3 files changed

+25
-34
lines changed

3 files changed

+25
-34
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ and this project adheres to
3232
Clarified what CPU models are supported by each existing CPU template.
3333
Firecracker exits with an error if a CPU template is used on an unsupported
3434
CPU model.
35+
- [#5165](https://github.com./firecracker-microvm/firecracker/pull/5165): Changed
36+
Firecracker snapshot feature from developer preview to generally available.
37+
Incremental snapshots remain in developer preview.
3538

3639
### Deprecated
3740

docs/snapshotting/snapshot-support.md

+10-14
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,13 @@ workload at that particular point in time.
3939

4040
### Supported platforms
4141

42-
> [!WARNING]
43-
>
44-
> The Firecracker snapshot feature is in
45-
> [developer preview](../RELEASE_POLICY.md) on all CPU micro-architectures
46-
> listed in [README](../../README.md#supported-platforms). See
47-
> [this section](#developer-preview-status) for more info.
42+
The Firecracker snapshot feature is supported on all CPU micro-architectures
43+
listed in [README](../../README.md#supported-platforms).
44+
45+
[!WARNING]
46+
47+
Diff snapshot support is in developer preview. See
48+
[this section](#developer-preview-status) for more info.
4849

4950
### Overview
5051

@@ -116,13 +117,8 @@ all [supported platforms](../../README.md#tested-platforms).
116117

117118
### Developer preview status
118119

119-
The snapshot functionality is still in developer preview due to the following:
120-
121-
- Poor entropy and replayable randomness when resuming multiple microvms from
122-
the same snapshot. We do not recommend to use snapshotting in production if
123-
there is no mechanism to guarantee proper secrecy and uniqueness between
124-
guests. Please see
125-
[Snapshot security and uniqueness](#snapshot-security-and-uniqueness).
120+
Diff snapshots are still in developer preview while we are diving deep into how
121+
the feature can be combined with guest_memfd support in Firecracker.
126122

127123
### Limitations
128124

@@ -528,7 +524,7 @@ For more information please see [this doc](random-for-clones.md)
528524

529525
### Usage examples
530526

531-
#### Example 1: secure usage (currently in dev preview)
527+
#### Example 1: secure usage
532528

533529
```console
534530
Boot microVM A -> ... -> Create snapshot S -> Terminate

src/vmm/src/rpc_interface.rs

+12-20
Original file line numberDiff line numberDiff line change
@@ -557,8 +557,6 @@ impl<'a> PrebootApiController<'a> {
557557
&mut self,
558558
load_params: &LoadSnapshotParams,
559559
) -> Result<VmmData, LoadSnapshotError> {
560-
log_dev_preview_warning("Virtual machine snapshots", Option::None);
561-
562560
let load_start_us = get_time_us(ClockType::Monotonic);
563561

564562
if self.boot_path {
@@ -592,15 +590,9 @@ impl<'a> PrebootApiController<'a> {
592590
// Set the VM
593591
self.built_vmm = Some(vmm);
594592

595-
log_dev_preview_warning(
596-
"Virtual machine snapshots",
597-
Some(format!(
598-
"'load snapshot' VMM action took {} us.",
599-
update_metric_with_elapsed_time(
600-
&METRICS.latencies_us.vmm_load_snapshot,
601-
load_start_us
602-
)
603-
)),
593+
debug!(
594+
"'load snapshot' VMM action took {} us.",
595+
update_metric_with_elapsed_time(&METRICS.latencies_us.vmm_load_snapshot, load_start_us)
604596
);
605597

606598
Ok(VmmData::Empty)
@@ -753,15 +745,15 @@ impl RuntimeApiController {
753745
&mut self,
754746
create_params: &CreateSnapshotParams,
755747
) -> Result<VmmData, VmmActionError> {
756-
log_dev_preview_warning("Virtual machine snapshots", None);
757-
758-
if create_params.snapshot_type == SnapshotType::Diff
759-
&& !self.vm_resources.machine_config.track_dirty_pages
760-
{
761-
return Err(VmmActionError::NotSupported(
762-
"Diff snapshots are not allowed on uVMs with dirty page tracking disabled."
763-
.to_string(),
764-
));
748+
if create_params.snapshot_type == SnapshotType::Diff {
749+
log_dev_preview_warning("Virtual machine diff snapshots", None);
750+
751+
if !self.vm_resources.machine_config.track_dirty_pages {
752+
return Err(VmmActionError::NotSupported(
753+
"Diff snapshots are not allowed on uVMs with dirty page tracking disabled."
754+
.to_string(),
755+
));
756+
}
765757
}
766758

767759
let mut locked_vmm = self.vmm.lock().unwrap();

0 commit comments

Comments
 (0)