Francois Gouget : testbot/LibvirtTool: Only power off the VM if needed for the revert.
Alexandre Julliard
julliard at winehq.org
Wed Jul 11 11:52:08 CDT 2018
Module: tools
Branch: master
Commit: 44456b4f96bc602827244416afe2dbbbb7600d10
URL: https://source.winehq.org/git/tools.git/?a=commit;h=44456b4f96bc602827244416afe2dbbbb7600d10
Author: Francois Gouget <fgouget at codeweavers.com>
Date: Wed Jul 11 11:35:42 2018 +0200
testbot/LibvirtTool: Only power off the VM if needed for the revert.
Reverting from a powered off state is sometimes ten times longer than
reverting from the current state.
But Libvirt/QEmu is buggy and fails to revert if the VM configuration
changes. So try the revert first and, if it fails (which is fast),
power off + re-revert the VM.
Signed-off-by: Francois Gouget <fgouget at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
testbot/bin/LibvirtTool.pl | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/testbot/bin/LibvirtTool.pl b/testbot/bin/LibvirtTool.pl
index 39e8c55..e6742f4 100755
--- a/testbot/bin/LibvirtTool.pl
+++ b/testbot/bin/LibvirtTool.pl
@@ -411,19 +411,25 @@ sub Revert()
}
$CurrentStatus = "reverting";
- # Some QEmu/KVM versions are buggy and cannot revert a running VM
- Debug(Elapsed($Start), " Powering off the VM\n");
+ # Revert the VM (and power it on if necessary)
my $Domain = $VM->GetDomain();
- my $ErrMessage = $Domain->PowerOff();
+ Debug(Elapsed($Start), " Reverting $VMKey to ", $VM->IdleSnapshot, "\n");
+ my $ErrMessage = $Domain->RevertToSnapshot();
if (defined $ErrMessage)
{
- LogMsg "Could not power off $VMKey: $ErrMessage\n";
- LogMsg "Trying the revert anyway...\n";
- }
+ # Libvirt/QEmu is buggy and cannot revert a running VM from one hardware
+ # configuration to another. So try again after powering off the VM, though
+ # this can be much slower.
+ Debug(Elapsed($Start), " Powering off the VM\n");
+ $ErrMessage = $Domain->PowerOff();
+ if (defined $ErrMessage)
+ {
+ FatalError("Could not power off $VMKey: $ErrMessage\n");
+ }
- # Revert the VM (and power it on if necessary)
- Debug(Elapsed($Start), " Reverting $VMKey to ", $VM->IdleSnapshot, "\n");
- $ErrMessage = $Domain->RevertToSnapshot();
+ Debug(Elapsed($Start), " Reverting $VMKey to ", $VM->IdleSnapshot, "... again\n");
+ $ErrMessage = $Domain->RevertToSnapshot();
+ }
if (defined $ErrMessage)
{
FatalError("Could not revert $VMKey to ". $VM->IdleSnapshot .": $ErrMessage\n");
More information about the wine-cvs
mailing list