@@ -164,6 +164,7 @@ type atomic =
164164 (* * takes suspend data, plus optionally vGPU state data *)
165165 | VM_restore of (Vm .id * data * data option )
166166 (* * takes suspend data, plus optionally vGPU state data *)
167+ | VM_fast_resume of Vm .id
167168 | VM_delay of (Vm .id * float ) (* * used to suppress fast reboot loops *)
168169 | VM_rename of (Vm .id * Vm .id * rename_when )
169170 | VM_import_metadata of (Vm .id * Metadata .t )
@@ -279,6 +280,8 @@ let rec name_of_atomic = function
279280 " VM_save"
280281 | VM_restore _ ->
281282 " VM_restore"
283+ | VM_fast_resume _ ->
284+ " VM_fast_resume"
282285 | VM_delay _ ->
283286 " VM_delay"
284287 | VM_rename _ ->
@@ -2377,6 +2380,9 @@ let rec perform_atomic ~progress_callback ?result (op : atomic)
23772380 let extras = [] in
23782381 B.VM. restore t progress_callback (VM_DB. read_exn id) vbds vifs data
23792382 vgpu_data extras
2383+ | VM_fast_resume id ->
2384+ debug " VM.fast_resume %s" id ;
2385+ B.VM. resume t (VM_DB. read_exn id)
23802386 | VM_delay (id , t ) ->
23812387 debug " VM %s: waiting for %.2f before next VM action" id t ;
23822388 Thread. delay t
@@ -2669,6 +2675,7 @@ and trigger_cleanup_after_failure_atom op t =
26692675 | VM_s3resume id
26702676 | VM_save (id, _, _, _)
26712677 | VM_restore (id, _, _)
2678+ | VM_fast_resume id
26722679 | VM_delay (id, _)
26732680 | VM_softreboot id ->
26742681 immediate_operation dbg id (VM_check_state id)
@@ -3828,6 +3835,8 @@ module VM = struct
38283835
38293836 let resume _ dbg id disk = queue_operation dbg id (VM_resume (id, Disk disk))
38303837
3838+ let fast_resume _ dbg id = queue_operation dbg id (Atomic (VM_fast_resume id))
3839+
38313840 let s3suspend _ dbg id = queue_operation dbg id (Atomic (VM_s3suspend id))
38323841
38333842 let s3resume _ dbg id = queue_operation dbg id (Atomic (VM_s3resume id))
@@ -4409,6 +4418,7 @@ let _ =
44094418 Server.VM. reboot (VM. reboot () ) ;
44104419 Server.VM. suspend (VM. suspend () ) ;
44114420 Server.VM. resume (VM. resume () ) ;
4421+ Server.VM. fast_resume (VM. fast_resume () ) ;
44124422 Server.VM. s3suspend (VM. s3suspend () ) ;
44134423 Server.VM. s3resume (VM. s3resume () ) ;
44144424 Server.VM. export_metadata (VM. export_metadata () ) ;
0 commit comments