]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: block commit: Don't overwrite error when rolling back disk labels
authorPeter Krempa <pkrempa@redhat.com>
Tue, 20 Jun 2017 10:18:34 +0000 (12:18 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 20 Jun 2017 11:25:55 +0000 (13:25 +0200)
Calls to qemuDomainDiskChainElementPrepare resets the original error,
thus we need to save it in the cleanup path of qemuDomainBlockCommit.

src/qemu/qemu_driver.c

index 0cf4aaa9574a3a4b1f48728f72d31eae919eae46..4f62c1a7a1056034a50fdf83f22d4b9bc9e1ffde 100644 (file)
@@ -17270,10 +17270,16 @@ qemuDomainBlockCommit(virDomainPtr dom,
 
  endjob:
     if (ret < 0 && clean_access) {
+        virErrorPtr orig_err = virSaveLastError();
         /* Revert access to read-only, if possible.  */
         qemuDomainDiskChainElementPrepare(driver, vm, baseSource, true);
         if (top_parent && top_parent != disk->src)
             qemuDomainDiskChainElementPrepare(driver, vm, top_parent, true);
+
+        if (orig_err) {
+            virSetError(orig_err);
+            virFreeError(orig_err);
+        }
     }
     virStorageSourceFree(mirror);
     qemuDomainObjEndJob(driver, vm);