@@ -7,7 +7,7 @@ use std::path::PathBuf;
7
7
use fc_utils:: u64_to_usize;
8
8
use semver:: Version ;
9
9
use vmm:: persist:: MicrovmState ;
10
- use vmm:: snapshot:: Snapshot ;
10
+ use vmm:: snapshot:: { Snapshot , SnapshotError , SnapshotHdr } ;
11
11
12
12
// Some errors are only used in aarch64 code
13
13
#[ allow( unused) ]
@@ -26,11 +26,13 @@ pub enum UtilsError {
26
26
}
27
27
28
28
#[ allow( unused) ]
29
- pub fn open_vmstate ( snapshot_path : & PathBuf ) -> Result < ( MicrovmState , Version ) , UtilsError > {
29
+ pub fn open_vmstate ( snapshot_path : & PathBuf ) -> Result < Snapshot < MicrovmState > , UtilsError > {
30
30
let mut snapshot_reader = File :: open ( snapshot_path) . map_err ( UtilsError :: VmStateFileOpen ) ?;
31
31
let metadata = std:: fs:: metadata ( snapshot_path) . map_err ( UtilsError :: VmStateFileMeta ) ?;
32
32
let snapshot_len = u64_to_usize ( metadata. len ( ) ) ;
33
- Snapshot :: load ( & mut snapshot_reader, snapshot_len) . map_err ( UtilsError :: VmStateLoad )
33
+
34
+ let snapshot: Result < Snapshot < MicrovmState > , UtilsError > = Snapshot :: load ( & mut snapshot_reader, snapshot_len) . map_err ( UtilsError :: VmStateLoad ) ;
35
+ snapshot
34
36
}
35
37
36
38
// This method is used only in aarch64 code so far
@@ -46,9 +48,10 @@ pub fn save_vmstate(
46
48
. truncate ( true )
47
49
. open ( output_path)
48
50
. map_err ( UtilsError :: OutputFileOpen ) ?;
49
- let mut snapshot = Snapshot :: new ( version) ;
51
+ let snapshot_hdr = SnapshotHdr :: new ( version) ;
52
+ let snapshot = Snapshot :: new ( snapshot_hdr, microvm_state) ;
50
53
snapshot
51
- . save ( & mut output_file, & microvm_state )
54
+ . save ( & mut output_file)
52
55
. map_err ( UtilsError :: VmStateSave ) ?;
53
56
Ok ( ( ) )
54
57
}
0 commit comments