[ovirt-users] restore snapshot cannot restore memory

pengyixiang yxpengi386 at 163.com
Fri Feb 23 16:05:34 UTC 2018


hello
    I found if we retore snapshot, memory cannot be restored, I test it with ovirt-4.1.2、vdsm-4.17.0 and libvirt-3.0.0, 
and i get some errors in [1],it seems vm not paused in creating snapshot, but self._underlyingCont() called in vm starting,
so error occurs, then vm is started in libvirt but shutdowned in vdsm, changes in [2], then it works well.




[1]
2018-02-12 19:39:23,830+0800 ERROR (vm/d7be0fde) [virt.vm] (vmId='d7be0fde-f9b9-4447-a250-2453482faef9') The vm start process failed (vm:662)
Traceback (most recent call last):
  File "/usr/share/vdsm/virt/vm.py", line 607, in _startUnderlyingVm
    self._completeIncomingMigration()
  File "/usr/share/vdsm/virt/vm.py", line 3268, in _completeIncomingMigration
    self.cont()
  File "/usr/share/vdsm/virt/vm.py", line 1128, in cont
    self._underlyingCont()
  File "/usr/share/vdsm/virt/vm.py", line 3368, in _underlyingCont
    self._dom.resume()
  File "/usr/lib/python2.7/dist-packages/vdsm/virt/virdomain.py", line 69, in f
    ret = attr(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/vdsm/libvirtconnection.py", line 123, in wrapper
    ret = f(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/vdsm/utils.py", line 926, in wrapper
    return func(inst, *args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/libvirt.py", line 1905, in resume
    if ret == -1: raise libvirtError ('virDomainResume() failed', dom=self)
libvirtError: Requested operation is not valid: domain is already running


[2]
--- a/Linx_Node/node_iso/install_script/py/vdsm/vdsm/virt/vm.py
+++ b/Linx_Node/node_iso/install_script/py/vdsm/vdsm/virt/vm.py
@@ -3677,6 +3677,8 @@ class Vm(object):
         else:
             snapFlags |= libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY
 
+        self._underlyingPause()
+
         # When creating memory snapshot libvirt will pause the vm
         should_freeze = not (memoryParams or frozen)
 
@@ -3734,6 +3736,8 @@ class Vm(object):
             if memoryParams:
                 self.cif.teardownVolumePath(memoryVol)
 
+        self._underlyingCont()
+
         # Returning quiesce to notify the manager whether the guest agent
         # froze and flushed the filesystems or not.
         quiesce = should_freeze and freezed["status"]["code"] == 0
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/users/attachments/20180224/b098c36e/attachment.html>


More information about the Users mailing list