« Previous | Next » 

Revision f0aa7a8b

IDf0aa7a8b2d518c54430e4382309281b93e51981a

Added by Miguel Di Ciurcio Filho almost 14 years ago

loadvm: improve tests before bdrv_snapshot_goto()

This patch improves the resilience of the load_vmstate() function, doing
further and better ordered tests.

In load_vmstate(), if there is any error on bdrv_snapshot_goto(), except if the
error is on VM state device, load_vmstate() will return zero and the VM will be
started with major corruption chances.

The current process:
- test if there is any writable device without snapshot support
- if exists return error
get the device that saves the VM state, possible return error but unlikely
because it was tested earlier
flush I/O
- run bdrv_snapshot_goto() on devices
- if fails, give an warning and goes to the next (not good!)
- if fails on the VM state device, return zero (not good!)
- check if the requested snapshot exists on the device that saves the VM state
and the state is not zero
- if fails return error
open the file with the VM state
- if fails return error
load the VM state
- if fails return error
return zero

New behavior:
- get the device that saves the VM state
- if fails return error
check if the requested snapshot exists on the device that saves the VM state
and the state is not zero
- if fails return error
test if there is any writable device without snapshot support
- if exists return error
test if the devices with snapshot support have the requested snapshot
- if anyone fails, return error
flush I/O
- run snapshot_goto() on devices
- if anyone fails, return error
open the file with the VM state
- if fails return error
load the VM state
- if fails return error
return zero

do_loadvm must not call vm_start if any error has occurred in load_vmstate.

Signed-off-by: Miguel Di Ciurcio Filho <>
Signed-off-by: Kevin Wolf <>

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences