Skip to content

Commit bf5a215

Browse files
committed
snapshot: remove full snapshot feature from development preview
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 49c1794 commit bf5a215

File tree

3 files changed

+16
-39
lines changed

3 files changed

+16
-39
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

+1-19
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
- [Overview](#overview)
99
- [Snapshot files management](#snapshot-files-management)
1010
- [Performance](#performance)
11-
- [Developer preview status](#developer-preview-status)
1211
- [Limitations](#limitations)
1312
- [Firecracker Snapshotting characteristics](#firecracker-snapshotting-characteristics)
1413
- [Snapshot versioning](#snapshot-versioning)
@@ -39,13 +38,6 @@ workload at that particular point in time.
3938

4039
### Supported platforms
4140

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.
48-
4941
### Overview
5042

5143
A Firecracker microVM snapshot can be used for loading it later in a different
@@ -114,16 +106,6 @@ The Firecracker snapshot create/resume performance depends on the memory size,
114106
vCPU count and emulated devices count. The Firecracker CI runs snapshot tests on
115107
all [supported platforms](../../README.md#tested-platforms).
116108

117-
### Developer preview status
118-
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).
126-
127109
### Limitations
128110

129111
- High snapshot latency on 5.4+ host kernels due to cgroups V1. We strongly
@@ -528,7 +510,7 @@ For more information please see [this doc](random-for-clones.md)
528510

529511
### Usage examples
530512

531-
#### Example 1: secure usage (currently in dev preview)
513+
#### Example 1: secure usage
532514

533515
```console
534516
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", Option::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)