<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>hello</div><div> 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, </div><div>and i get some errors in [1],it seems vm not paused in creating snapshot, but self._underlyingCont() called in vm starting,</div><div>so error occurs, then vm is started in libvirt but shutdowned in vdsm, changes in [2], then it works well.</div><div><br></div><div><br></div><div>[1]</div><div>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)<br>Traceback (most recent call last):<br> File "/usr/share/vdsm/virt/vm.py", line 607, in _startUnderlyingVm<br> self._completeIncomingMigration()<br> File "/usr/share/vdsm/virt/vm.py", line 3268, in _completeIncomingMigration<br> self.cont()<br> File "/usr/share/vdsm/virt/vm.py", line 1128, in cont<br> self._underlyingCont()<br> File "/usr/share/vdsm/virt/vm.py", line 3368, in _underlyingCont<br> self._dom.resume()<br> File "/usr/lib/python2.7/dist-packages/vdsm/virt/virdomain.py", line 69, in f<br> ret = attr(*args, **kwargs)<br> File "/usr/lib/python2.7/dist-packages/vdsm/libvirtconnection.py", line 123, in wrapper<br> ret = f(*args, **kwargs)<br> File "/usr/lib/python2.7/dist-packages/vdsm/utils.py", line 926, in wrapper<br> return func(inst, *args, **kwargs)<br> File "/usr/lib/python2.7/dist-packages/libvirt.py", line 1905, in resume<br> if ret == -1: raise libvirtError ('virDomainResume() failed', dom=self)<br>libvirtError: Requested operation is not valid: domain is already running</div><div><br></div><div>[2]</div><div><div>--- a/Linx_Node/node_iso/install_script/py/vdsm/vdsm/virt/vm.py</div><div>+++ b/Linx_Node/node_iso/install_script/py/vdsm/vdsm/virt/vm.py</div><div>@@ -3677,6 +3677,8 @@ class Vm(object):</div><div> else:</div><div> snapFlags |= libvirt.VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY</div><div> </div><div>+ self._underlyingPause()</div><div>+</div><div> # When creating memory snapshot libvirt will pause the vm</div><div> should_freeze = not (memoryParams or frozen)</div><div> </div><div>@@ -3734,6 +3736,8 @@ class Vm(object):</div><div> if memoryParams:</div><div> self.cif.teardownVolumePath(memoryVol)</div><div> </div><div>+ self._underlyingCont()</div><div>+</div><div> # Returning quiesce to notify the manager whether the guest agent</div><div> # froze and flushed the filesystems or not.</div><div> quiesce = should_freeze and freezed["status"]["code"] == 0</div></div></div><br><br><span title="neteasefooter"><p> </p></span>