From nobody Tue Dec 16 08:36:45 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1505211783972688.8758526750933; Tue, 12 Sep 2017 03:23:03 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BFAB180F94; Tue, 12 Sep 2017 10:23:02 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 95A546E214; Tue, 12 Sep 2017 10:23:02 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 5353C185735D; Tue, 12 Sep 2017 10:23:02 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v8CA8eWI012872 for ; Tue, 12 Sep 2017 06:08:40 -0400 Received: by smtp.corp.redhat.com (Postfix) id 8F43860841; Tue, 12 Sep 2017 10:08:40 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.136]) by smtp.corp.redhat.com (Postfix) with ESMTP id BD1E26BF7B; Tue, 12 Sep 2017 10:08:39 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com BFAB180F94 Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx03.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=libvir-list-bounces@redhat.com From: Peter Krempa To: libvir-list@redhat.com Date: Tue, 12 Sep 2017 12:09:45 +0200 Message-Id: In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Cc: Peter Krempa Subject: [libvirt] [PATCH 2/3] qemu: hotplug: Use new helpers for storing libvirt errors X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.11 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.27]); Tue, 12 Sep 2017 10:23:03 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" The helpers allow to simplify restoring original errors in most cases. --- src/qemu/qemu_hotplug.c | 93 +++++++++++++++------------------------------= ---- 1 file changed, 28 insertions(+), 65 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index b365078ec..35d73f74e 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -433,7 +433,7 @@ qemuDomainAttachVirtioDiskDevice(virConnectPtr conn, return ret; exit_monitor: - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); if (driveAdded && qemuMonitorDriveDel(priv->mon, drivealias) < 0) { VIR_WARN("Unable to remove drive %s (%s) after failed " "qemuMonitorAddDevice", drivealias, drivestr); @@ -444,11 +444,7 @@ qemuDomainAttachVirtioDiskDevice(virConnectPtr conn, ignore_value(qemuMonitorDelObject(priv->mon, encinfo->s.aes.alias)= ); if (qemuDomainObjExitMonitor(driver, vm) < 0) releaseaddr =3D false; - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } - + virErrorRestore(&orig_err); virDomainAuditDisk(vm, NULL, disk->src, "attach", false); @@ -722,7 +718,7 @@ qemuDomainAttachSCSIDisk(virConnectPtr conn, return ret; exit_monitor: - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); if (driveAdded && qemuMonitorDriveDel(priv->mon, drivealias) < 0) { VIR_WARN("Unable to remove drive %s (%s) after failed " "qemuMonitorAddDevice", drivealias, drivestr); @@ -732,10 +728,7 @@ qemuDomainAttachSCSIDisk(virConnectPtr conn, if (encobjAdded) ignore_value(qemuMonitorDelObject(priv->mon, encinfo->s.aes.alias)= ); ignore_value(qemuDomainObjExitMonitor(driver, vm)); - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); virDomainAuditDisk(vm, NULL, disk->src, "attach", false); @@ -819,16 +812,13 @@ qemuDomainAttachUSBMassStorageDevice(virQEMUDriverPtr= driver, return ret; exit_monitor: - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); if (driveAdded && qemuMonitorDriveDel(priv->mon, drivealias) < 0) { VIR_WARN("Unable to remove drive %s (%s) after failed " "qemuMonitorAddDevice", drivealias, drivestr); } ignore_value(qemuDomainObjExitMonitor(driver, vm)); - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); virDomainAuditDisk(vm, NULL, disk->src, "attach", false); @@ -1356,7 +1346,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, if (!virDomainObjIsActive(vm)) goto cleanup; - originalError =3D virSaveLastError(); + virErrorPreserveLast(&originalError); if (vlan < 0) { if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NETDEV)) { char *netdev_name; @@ -1387,8 +1377,7 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver, VIR_FREE(hostnet_name); } } - virSetError(originalError); - virFreeError(originalError); + virErrorRestore(&originalError); goto cleanup; } @@ -1562,7 +1551,7 @@ qemuDomainDelTLSObjects(virQEMUDriverPtr driver, if (!tlsAlias && !secAlias) return; - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0) goto cleanup; @@ -1576,10 +1565,7 @@ qemuDomainDelTLSObjects(virQEMUDriverPtr driver, ignore_value(qemuDomainObjExitMonitor(driver, vm)); cleanup: - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); } @@ -1621,12 +1607,9 @@ qemuDomainAddTLSObjects(virQEMUDriverPtr driver, return qemuDomainObjExitMonitor(driver, vm); error: - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); ignore_value(qemuDomainObjExitMonitor(driver, vm)); - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); qemuDomainDelTLSObjects(driver, vm, asyncJob, secAlias, tlsAlias); return -1; @@ -1788,15 +1771,12 @@ int qemuDomainAttachRedirdevDevice(virConnectPtr co= nn, return ret; exit_monitor: - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); /* detach associated chardev on error */ if (chardevAdded) ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias)); ignore_value(qemuDomainObjExitMonitor(driver, vm)); - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); qemuDomainDelTLSObjects(driver, vm, QEMU_ASYNC_JOB_NONE, secAlias, tlsAlias); goto audit; @@ -2051,15 +2031,12 @@ int qemuDomainAttachChrDevice(virConnectPtr conn, return ret; exit_monitor: - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); /* detach associated chardev on error */ if (chardevAttached) qemuMonitorDetachCharDev(priv->mon, charAlias); ignore_value(qemuDomainObjExitMonitor(driver, vm)); - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); qemuDomainDelTLSObjects(driver, vm, QEMU_ASYNC_JOB_NONE, secAlias, tlsAlias); @@ -2202,17 +2179,14 @@ qemuDomainAttachRNGDevice(virConnectPtr conn, return ret; exit_monitor: - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); if (objAdded) ignore_value(qemuMonitorDelObject(priv->mon, objAlias)); if (rng->backend =3D=3D VIR_DOMAIN_RNG_BACKEND_EGD && chardevAdded) ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias)); if (qemuDomainObjExitMonitor(driver, vm) < 0) releaseaddr =3D false; - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); qemuDomainDelTLSObjects(driver, vm, QEMU_ASYNC_JOB_NONE, secAlias, tlsAlias); @@ -2349,15 +2323,12 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver, return ret; exit_monitor: - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); if (objAdded) ignore_value(qemuMonitorDelObject(priv->mon, objalias)); if (qemuDomainObjExitMonitor(driver, vm) < 0) mem =3D NULL; - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); if (!mem) goto audit; @@ -2368,10 +2339,9 @@ qemuDomainAttachMemory(virQEMUDriverPtr driver, mem =3D NULL; /* reset the mlock limit */ - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); ignore_value(qemuDomainAdjustMaxMemLock(vm)); - virSetError(orig_err); - virFreeError(orig_err); + virErrorRestore(&orig_err); goto audit; } @@ -2561,17 +2531,14 @@ qemuDomainAttachHostSCSIDevice(virConnectPtr conn, return ret; exit_monitor: - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); if (driveAdded && qemuMonitorDriveDel(priv->mon, drivealias) < 0) { VIR_WARN("Unable to remove drive %s (%s) after failed " "qemuMonitorAddDevice", drvstr, devstr); } ignore_value(qemuDomainObjExitMonitor(driver, vm)); - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); virDomainAuditHostdev(vm, hostdev, "attach", false); @@ -2846,7 +2813,7 @@ qemuDomainAttachShmemDevice(virQEMUDriverPtr driver, return ret; exit_monitor: - orig_err =3D virSaveLastError(); + virErrorPreserveLast(&orig_err); if (release_backing) { if (shmem->server.enabled) ignore_value(qemuMonitorDetachCharDev(priv->mon, charAlias)); @@ -2857,10 +2824,7 @@ qemuDomainAttachShmemDevice(virQEMUDriverPtr driver, if (qemuDomainObjExitMonitor(driver, vm) < 0) release_address =3D false; - if (orig_err) { - virSetError(orig_err); - virFreeError(orig_err); - } + virErrorRestore(&orig_err); goto audit; } @@ -2948,10 +2912,9 @@ qemuDomainChangeNetFilter(virDomainObjPtr vm, _("failed to add new filter rules to '%s' " "- attempting to restore old rules"), olddev->ifname); - errobj =3D virSaveLastError(); + virErrorPreserveLast(&errobj); ignore_value(virDomainConfNWFilterInstantiate(vm->def->uuid, oldde= v)); - virSetError(errobj); - virFreeError(errobj); + virErrorRestore(&errobj); return -1; } return 0; --=20 2.14.1 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list