]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Restore errors when rolling back disk image state
authorPeter Krempa <pkrempa@redhat.com>
Mon, 11 Sep 2017 13:28:15 +0000 (15:28 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 15 Sep 2017 03:28:21 +0000 (05:28 +0200)
Some operations done to rollback disk image labelling and locking might
overwrite (or clear) the actual error. Remember the original error when
tearing down disk access so that it's not obscured.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1461301

src/qemu/qemu_hotplug.c

index 35d73f74ec20a50324eb1700a934e3098b559ee1..7dd6e5fd9c2906ebe53eed76daff2b041c420a88 100644 (file)
@@ -94,6 +94,7 @@ qemuDomainPrepareDisk(virQEMUDriverPtr driver,
     virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
     int ret = -1;
     virStorageSourcePtr origsrc = NULL;
+    virErrorPtr orig_err = NULL;
 
     if (overridesrc) {
         origsrc = disk->src;
@@ -102,6 +103,7 @@ qemuDomainPrepareDisk(virQEMUDriverPtr driver,
 
     /* just tear down the disk access */
     if (teardown) {
+        virErrorPreserveLast(&orig_err);
         ret = 0;
         goto rollback_cgroup;
     }
@@ -145,6 +147,8 @@ qemuDomainPrepareDisk(virQEMUDriverPtr driver,
     if (origsrc)
         disk->src = origsrc;
 
+    virErrorRestore(&orig_err);
+
     virObjectUnref(cfg);
 
     return ret;