From nobody Fri May 3 11:52:47 2024 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568982094; cv=none; d=zoho.com; s=zohoarc; b=dFQ5+Mlw2M8orJsf7QEdBQNwZ/rmtfQqHOhgfr0VnSp4ea78hinupKXsBa3/1Ei1yTKIh9dls2BWkz3FpFrUBChCa2MXZFySb2jmrEtndEefXLLCVYL540NeHMpFrWHCXENEOKiUEWBsO/8gSl+PUGTx4cNJY1gSXWiX9H1uzK4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568982094; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=z+2tSypZJRLvddGU4CyP2sYwCJMSHgdoyGTEipwzeVg=; b=IglPG6w+N/qRDtByWDz7i+54gkvzZzpWeHrkQbg05eLtT6B04a7KSgBSapXxVIEuR+akuqVKsC0Evd/UNR2/DDRmeFNtQGvcweeA5Qj+nJal1ybe15dPlKarlC5jbrWHxkx00ArFikS6KVLwW1IfBnt4fkFa+W95kzRpPyDAjzM= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1568982094296338.66272485962486; Fri, 20 Sep 2019 05:21:34 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 5DC75883CA; Fri, 20 Sep 2019 12:21:32 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id EAD9119C68; Fri, 20 Sep 2019 12:21:31 +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 AEEB04EE6F; Fri, 20 Sep 2019 12:21:31 +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 x8KCLPKA006735 for ; Fri, 20 Sep 2019 08:21:25 -0400 Received: by smtp.corp.redhat.com (Postfix) id 4000460920; Fri, 20 Sep 2019 12:21:25 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id 477EA608C2 for ; Fri, 20 Sep 2019 12:21:24 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 20 Sep 2019 14:21:14 +0200 Message-Id: <03329d37594fa8fdd070da9386ea6a228437f7a9.1568981923.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 1/7] qemu: Move, rename and export qemuDomObjFromDomain 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: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Fri, 20 Sep 2019 12:21:32 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Move it to qemu_domain.c and rename it to qemuDomainObjFromDomain. This will allow reusing it after splitting out checkpoint code from qemu_driver.c. Signed-off-by: Peter Krempa --- src/qemu/qemu_domain.c | 31 +++++ src/qemu/qemu_domain.h | 1 + src/qemu/qemu_driver.c | 303 +++++++++++++++++++---------------------- 3 files changed, 169 insertions(+), 166 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index ad4db7e881..f733198ea9 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -119,6 +119,37 @@ VIR_ENUM_IMPL(qemuDomainNamespace, "mount", ); + +/** + * qemuDomainObjFromDomain: + * @domain: Domain pointer that has to be looked up + * + * This function looks up @domain and returns the appropriate virDomainObj= Ptr + * that has to be released by calling virDomainObjEndAPI(). + * + * Returns the domain object with incremented reference counter which is l= ocked + * on success, NULL otherwise. + */ +virDomainObjPtr +qemuDomainObjFromDomain(virDomainPtr domain) +{ + virDomainObjPtr vm; + virQEMUDriverPtr driver =3D domain->conn->privateData; + char uuidstr[VIR_UUID_STRING_BUFLEN]; + + vm =3D virDomainObjListFindByUUID(driver->domains, domain->uuid); + if (!vm) { + virUUIDFormat(domain->uuid, uuidstr); + virReportError(VIR_ERR_NO_DOMAIN, + _("no domain with matching uuid '%s' (%s)"), + uuidstr, domain->name); + return NULL; + } + + return vm; +} + + struct _qemuDomainLogContext { virObject parent; diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index f53ea146e1..63d780e79b 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -581,6 +581,7 @@ struct _qemuDomainXmlNsDef { char **capsdel; }; +virDomainObjPtr qemuDomainObjFromDomain(virDomainPtr domain); qemuDomainSaveCookiePtr qemuDomainSaveCookieNew(virDomainObjPtr vm); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 0753904472..21ab58e4ec 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -161,42 +161,13 @@ static int qemuARPGetInterfaces(virDomainObjPtr vm, static virQEMUDriverPtr qemu_driver; -/** - * qemuDomObjFromDomain: - * @domain: Domain pointer that has to be looked up - * - * This function looks up @domain and returns the appropriate virDomainObj= Ptr - * that has to be released by calling virDomainObjEndAPI(). - * - * Returns the domain object with incremented reference counter which is l= ocked - * on success, NULL otherwise. - */ -static virDomainObjPtr -qemuDomObjFromDomain(virDomainPtr domain) -{ - virDomainObjPtr vm; - virQEMUDriverPtr driver =3D domain->conn->privateData; - char uuidstr[VIR_UUID_STRING_BUFLEN]; - - vm =3D virDomainObjListFindByUUID(driver->domains, domain->uuid); - if (!vm) { - virUUIDFormat(domain->uuid, uuidstr); - virReportError(VIR_ERR_NO_DOMAIN, - _("no domain with matching uuid '%s' (%s)"), - uuidstr, domain->name); - return NULL; - } - - return vm; -} - /* Looks up the domain object from snapshot and unlocks the * driver. The returned domain object is locked and ref'd and the * caller must call virDomainObjEndAPI() on it. */ static virDomainObjPtr qemuDomObjFromSnapshot(virDomainSnapshotPtr snapshot) { - return qemuDomObjFromDomain(snapshot->domain); + return qemuDomainObjFromDomain(snapshot->domain); } @@ -230,7 +201,7 @@ qemuSnapObjFromSnapshot(virDomainObjPtr vm, static virDomainObjPtr qemuDomObjFromCheckpoint(virDomainCheckpointPtr checkpoint) { - return qemuDomObjFromDomain(checkpoint->domain); + return qemuDomainObjFromDomain(checkpoint->domain); } @@ -1742,7 +1713,7 @@ static int qemuDomainIsActive(virDomainPtr dom) virDomainObjPtr obj; int ret =3D -1; - if (!(obj =3D qemuDomObjFromDomain(dom))) + if (!(obj =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainIsActiveEnsureACL(dom->conn, obj->def) < 0) @@ -1760,7 +1731,7 @@ static int qemuDomainIsPersistent(virDomainPtr dom) virDomainObjPtr obj; int ret =3D -1; - if (!(obj =3D qemuDomObjFromDomain(dom))) + if (!(obj =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainIsPersistentEnsureACL(dom->conn, obj->def) < 0) @@ -1778,7 +1749,7 @@ static int qemuDomainIsUpdated(virDomainPtr dom) virDomainObjPtr obj; int ret =3D -1; - if (!(obj =3D qemuDomObjFromDomain(dom))) + if (!(obj =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainIsUpdatedEnsureACL(dom->conn, obj->def) < 0) @@ -1958,7 +1929,7 @@ static int qemuDomainSuspend(virDomainPtr dom) int state; virQEMUDriverConfigPtr cfg =3D NULL; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainSuspendEnsureACL(dom->conn, vm->def) < 0) @@ -2013,7 +1984,7 @@ static int qemuDomainResume(virDomainPtr dom) int reason; virQEMUDriverConfigPtr cfg =3D NULL; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; cfg =3D virQEMUDriverGetConfig(driver); @@ -2076,7 +2047,7 @@ static int qemuDomainShutdownFlags(virDomainPtr dom, = unsigned int flags) virCheckFlags(VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN | VIR_DOMAIN_SHUTDOWN_GUEST_AGENT, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (vm->def->onPoweroff =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_RESTART || @@ -2180,7 +2151,7 @@ qemuDomainReboot(virDomainPtr dom, unsigned int flags) virCheckFlags(VIR_DOMAIN_REBOOT_ACPI_POWER_BTN | VIR_DOMAIN_REBOOT_GUEST_AGENT, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (vm->def->onReboot =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_DESTROY || @@ -2268,7 +2239,7 @@ qemuDomainReset(virDomainPtr dom, unsigned int flags) virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainResetEnsureACL(dom->conn, vm->def) < 0) @@ -2331,7 +2302,7 @@ qemuDomainDestroyFlags(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_DESTROY_GRACEFUL, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; priv =3D vm->privateData; @@ -2396,7 +2367,7 @@ static char *qemuDomainGetOSType(virDomainPtr dom) { virDomainObjPtr vm; char *type =3D NULL; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetOSTypeEnsureACL(dom->conn, vm->def) < 0) @@ -2416,7 +2387,7 @@ qemuDomainGetMaxMemory(virDomainPtr dom) virDomainObjPtr vm; unsigned long long ret =3D 0; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetMaxMemoryEnsureACL(dom->conn, vm->def) < 0) @@ -2444,7 +2415,7 @@ static int qemuDomainSetMemoryFlags(virDomainPtr dom,= unsigned long newmem, VIR_DOMAIN_AFFECT_CONFIG | VIR_DOMAIN_MEM_MAXIMUM, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; cfg =3D virQEMUDriverGetConfig(driver); @@ -2571,7 +2542,7 @@ static int qemuDomainSetMemoryStatsPeriod(virDomainPt= r dom, int period, virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; cfg =3D virQEMUDriverGetConfig(driver); @@ -2642,7 +2613,7 @@ static int qemuDomainInjectNMI(virDomainPtr domain, u= nsigned int flags) virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return -1; if (virDomainInjectNMIEnsureACL(domain->conn, vm->def) < 0) @@ -2702,7 +2673,7 @@ static int qemuDomainSendKey(virDomainPtr domain, } } - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) goto cleanup; priv =3D vm->privateData; @@ -2738,7 +2709,7 @@ qemuDomainGetInfo(virDomainPtr dom, virDomainObjPtr vm; int ret =3D -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetInfoEnsureACL(dom->conn, vm->def) < 0) @@ -2794,7 +2765,7 @@ qemuDomainGetState(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetStateEnsureACL(dom->conn, vm->def) < 0) @@ -2819,7 +2790,7 @@ qemuDomainGetControlInfo(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetControlInfoEnsureACL(dom->conn, vm->def) < 0) @@ -3629,7 +3600,7 @@ qemuDomainSaveFlags(virDomainPtr dom, const char *pat= h, const char *dxml, "save", false)) < 0) goto cleanup; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainSaveFlagsEnsureACL(dom->conn, vm->def) < 0) @@ -3684,7 +3655,7 @@ qemuDomainManagedSave(virDomainPtr dom, unsigned int = flags) VIR_DOMAIN_SAVE_RUNNING | VIR_DOMAIN_SAVE_PAUSED, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainManagedSaveEnsureACL(dom->conn, vm->def) < 0) @@ -3755,7 +3726,7 @@ qemuDomainHasManagedSaveImage(virDomainPtr dom, unsig= ned int flags) virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainHasManagedSaveImageEnsureACL(dom->conn, vm->def) < 0) @@ -3778,7 +3749,7 @@ qemuDomainManagedSaveRemove(virDomainPtr dom, unsigne= d int flags) virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainManagedSaveRemoveEnsureACL(dom->conn, vm->def) < 0) @@ -4021,7 +3992,7 @@ qemuDomainCoreDumpWithFormat(virDomainPtr dom, VIR_DUMP_BYPASS_CACHE | VIR_DUMP_RESET | VIR_DUMP_MEMORY_ONLY, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainCoreDumpWithFormatEnsureACL(dom->conn, vm->def) < 0) @@ -4135,7 +4106,7 @@ qemuDomainScreenshot(virDomainPtr dom, virCheckFlags(0, NULL); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -5198,7 +5169,7 @@ qemuDomainSetVcpusFlags(virDomainPtr dom, VIR_DOMAIN_VCPU_GUEST | VIR_DOMAIN_VCPU_HOTPLUGGABLE, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainSetVcpusFlagsEnsureACL(dom->conn, vm->def, flags) < 0) @@ -5345,7 +5316,7 @@ qemuDomainPinVcpuFlags(virDomainPtr dom, cfg =3D virQEMUDriverGetConfig(driver); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainPinVcpuFlagsEnsureACL(dom->conn, vm->def, flags) < 0) @@ -5425,7 +5396,7 @@ qemuDomainGetVcpuPinInfo(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetVcpuPinInfoEnsureACL(dom->conn, vm->def) < 0) @@ -5470,7 +5441,7 @@ qemuDomainPinEmulator(virDomainPtr dom, cfg =3D virQEMUDriverGetConfig(driver); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainPinEmulatorEnsureACL(dom->conn, vm->def, flags) < 0) @@ -5574,7 +5545,7 @@ qemuDomainGetEmulatorPinInfo(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetEmulatorPinInfoEnsureACL(dom->conn, vm->def) < 0) @@ -5623,7 +5594,7 @@ qemuDomainGetVcpus(virDomainPtr dom, virDomainObjPtr vm; int ret =3D -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetVcpusEnsureACL(dom->conn, vm->def) < 0) @@ -5660,7 +5631,7 @@ qemuDomainGetVcpusFlags(virDomainPtr dom, unsigned in= t flags) VIR_DOMAIN_VCPU_MAXIMUM | VIR_DOMAIN_VCPU_GUEST, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainGetVcpusFlagsEnsureACL(dom->conn, vm->def, flags) < 0) @@ -5895,7 +5866,7 @@ qemuDomainGetIOThreadInfo(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetIOThreadInfoEnsureACL(dom->conn, vm->def) < 0) @@ -5942,7 +5913,7 @@ qemuDomainPinIOThread(virDomainPtr dom, cfg =3D virQEMUDriverGetConfig(driver); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -6519,7 +6490,7 @@ qemuDomainAddIOThread(virDomainPtr dom, return -1; } - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainAddIOThreadEnsureACL(dom->conn, vm->def, flags) < 0) @@ -6554,7 +6525,7 @@ qemuDomainDelIOThread(virDomainPtr dom, return -1; } - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainDelIOThreadEnsureACL(dom->conn, vm->def, flags) < 0) @@ -6603,7 +6574,7 @@ qemuDomainSetIOThreadParams(virDomainPtr dom, iothread.iothread_id =3D iothread_id; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainSetIOThreadParamsEnsureACL(dom->conn, vm->def, flags) < 0) @@ -6629,7 +6600,7 @@ static int qemuDomainGetSecurityLabel(virDomainPtr do= m, virSecurityLabelPtr secl memset(seclabel, 0, sizeof(*seclabel)); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainGetSecurityLabelEnsureACL(dom->conn, vm->def) < 0) @@ -6670,7 +6641,7 @@ static int qemuDomainGetSecurityLabelList(virDomainPt= r dom, size_t i; int ret =3D -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainGetSecurityLabelListEnsureACL(dom->conn, vm->def) < 0) @@ -7360,7 +7331,7 @@ qemuDomainManagedSaveGetXMLDesc(virDomainPtr dom, uns= igned int flags) virCheckFlags(VIR_DOMAIN_SAVE_IMAGE_XML_SECURE, NULL); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return ret; priv =3D vm->privateData; @@ -7402,7 +7373,7 @@ qemuDomainManagedSaveDefineXML(virDomainPtr dom, cons= t char *dxml, char *path =3D NULL; int ret =3D -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainManagedSaveDefineXMLEnsureACL(conn, vm->def) < 0) @@ -7518,7 +7489,7 @@ static char virCheckFlags(VIR_DOMAIN_XML_COMMON_FLAGS | VIR_DOMAIN_XML_UPDATE_CPU, NULL); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetXMLDescEnsureACL(dom->conn, vm->def, flags) < 0) @@ -7758,7 +7729,7 @@ qemuDomainCreateWithFlags(virDomainPtr dom, unsigned = int flags) virNWFilterReadLockFilterUpdates(); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainCreateWithFlagsEnsureACL(dom->conn, vm->def) < 0) @@ -7911,7 +7882,7 @@ qemuDomainUndefineFlags(virDomainPtr dom, return -1; } - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; cfg =3D virQEMUDriverGetConfig(driver); @@ -8936,7 +8907,7 @@ qemuDomainAttachDeviceFlags(virDomainPtr dom, virNWFilterReadLockFilterUpdates(); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainAttachDeviceFlagsEnsureACL(dom->conn, vm->def, flags) < 0) @@ -8995,7 +8966,7 @@ static int qemuDomainUpdateDeviceFlags(virDomainPtr d= om, if (!(caps =3D virQEMUDriverGetCapabilities(driver, false))) goto cleanup; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -9266,7 +9237,7 @@ qemuDomainDetachDeviceFlags(virDomainPtr dom, virDomainObjPtr vm =3D NULL; int ret =3D -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainDetachDeviceFlagsEnsureACL(dom->conn, vm->def, flags) < 0) @@ -9301,7 +9272,7 @@ qemuDomainDetachDeviceAlias(virDomainPtr dom, virDomainObjPtr vm =3D NULL; int ret =3D -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainDetachDeviceAliasEnsureACL(dom->conn, vm->def, flags) < 0) @@ -9339,7 +9310,7 @@ static int qemuDomainGetAutostart(virDomainPtr dom, virDomainObjPtr vm; int ret =3D -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetAutostartEnsureACL(dom->conn, vm->def) < 0) @@ -9362,7 +9333,7 @@ static int qemuDomainSetAutostart(virDomainPtr dom, int ret =3D -1; virQEMUDriverConfigPtr cfg =3D NULL; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; cfg =3D virQEMUDriverGetConfig(driver); @@ -9438,7 +9409,7 @@ static char *qemuDomainGetSchedulerType(virDomainPtr = dom, qemuDomainObjPrivatePtr priv; virQEMUDriverPtr driver =3D dom->conn->privateData; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -9693,7 +9664,7 @@ qemuDomainSetBlkioParameters(virDomainPtr dom, NULL) < 0) return -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; priv =3D vm->privateData; @@ -9901,7 +9872,7 @@ qemuDomainGetBlkioParameters(virDomainPtr dom, * that can't parse it. */ flags &=3D ~VIR_TYPED_PARAM_STRING_OKAY; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; priv =3D vm->privateData; @@ -10003,7 +9974,7 @@ qemuDomainSetMemoryParameters(virDomainPtr dom, return -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; priv =3D vm->privateData; @@ -10137,7 +10108,7 @@ qemuDomainGetMemoryParameters(virDomainPtr dom, VIR_DOMAIN_AFFECT_CONFIG | VIR_TYPED_PARAM_STRING_OKAY, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; priv =3D vm->privateData; @@ -10291,7 +10262,7 @@ qemuDomainSetNumaParameters(virDomainPtr dom, NULL) < 0) return -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; priv =3D vm->privateData; @@ -10410,7 +10381,7 @@ qemuDomainGetNumaParameters(virDomainPtr dom, VIR_DOMAIN_AFFECT_CONFIG | VIR_TYPED_PARAM_STRING_OKAY, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; priv =3D vm->privateData; @@ -10528,7 +10499,7 @@ qemuDomainSetPerfEvents(virDomainPtr dom, NULL) < 0) return -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; cfg =3D virQEMUDriverGetConfig(driver); @@ -10607,7 +10578,7 @@ qemuDomainGetPerfEvents(virDomainPtr dom, VIR_DOMAIN_AFFECT_CONFIG | VIR_TYPED_PARAM_STRING_OKAY, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetPerfEventsEnsureACL(dom->conn, vm->def) < 0) @@ -10802,7 +10773,7 @@ qemuDomainSetSchedulerParametersFlags(virDomainPtr = dom, NULL) < 0) return -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; priv =3D vm->privateData; @@ -11223,7 +11194,7 @@ qemuDomainGetSchedulerParametersFlags(virDomainPtr = dom, VIR_DOMAIN_AFFECT_CONFIG | VIR_TYPED_PARAM_STRING_OKAY, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -11351,7 +11322,7 @@ qemuDomainBlockResize(virDomainPtr dom, size *=3D 1024; } - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -11563,7 +11534,7 @@ qemuDomainBlockStats(virDomainPtr dom, int ret =3D -1; virDomainObjPtr vm; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainBlockStatsEnsureACL(dom->conn, vm->def) < 0) @@ -11617,7 +11588,7 @@ qemuDomainBlockStatsFlags(virDomainPtr dom, /* We don't return strings, and thus trivially support this flag. */ flags &=3D ~VIR_TYPED_PARAM_STRING_OKAY; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainBlockStatsFlagsEnsureACL(dom->conn, vm->def) < 0) @@ -11687,7 +11658,7 @@ qemuDomainInterfaceStats(virDomainPtr dom, virDomainNetDefPtr net =3D NULL; int ret =3D -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainInterfaceStatsEnsureACL(dom->conn, vm->def) < 0) @@ -11754,7 +11725,7 @@ qemuDomainSetInterfaceParameters(virDomainPtr dom, NULL) < 0) return -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; cfg =3D virQEMUDriverGetConfig(driver); @@ -11945,7 +11916,7 @@ qemuDomainGetInterfaceParameters(virDomainPtr dom, VIR_DOMAIN_AFFECT_CONFIG | VIR_TYPED_PARAM_STRING_OKAY, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainGetInterfaceParametersEnsureACL(dom->conn, vm->def) < 0) @@ -12088,7 +12059,7 @@ qemuDomainMemoryStats(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainMemoryStatsEnsureACL(dom->conn, vm->def) < 0) @@ -12122,7 +12093,7 @@ qemuDomainBlockPeek(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainBlockPeekEnsureACL(dom->conn, vm->def) < 0) @@ -12190,7 +12161,7 @@ qemuDomainMemoryPeek(virDomainPtr dom, virCheckFlags(VIR_MEMORY_VIRTUAL | VIR_MEMORY_PHYSICAL, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; cfg =3D virQEMUDriverGetConfig(driver); @@ -12479,7 +12450,7 @@ qemuDomainGetBlockInfo(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; cfg =3D virQEMUDriverGetConfig(driver); @@ -12817,7 +12788,7 @@ qemuDomainMigratePerform(virDomainPtr dom, QEMU_MIGRATION_SOURCE))) goto cleanup; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainMigratePerformEnsureACL(dom->conn, vm->def) < 0) @@ -12904,7 +12875,7 @@ qemuDomainMigrateBegin3(virDomainPtr domain, virCheckFlags(QEMU_MIGRATION_FLAGS, NULL); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return NULL; if (virDomainMigrateBegin3EnsureACL(domain->conn, vm->def) < 0) { @@ -12950,7 +12921,7 @@ qemuDomainMigrateBegin3Params(virDomainPtr domain, if (nmigrate_disks < 0) goto cleanup; - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) goto cleanup; if (virDomainMigrateBegin3ParamsEnsureACL(domain->conn, vm->def) < 0) { @@ -13246,7 +13217,7 @@ qemuDomainMigratePerform3(virDomainPtr dom, QEMU_MIGRATION_SOURCE))) goto cleanup; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainMigratePerform3EnsureACL(dom->conn, vm->def) < 0) @@ -13332,7 +13303,7 @@ qemuDomainMigratePerform3Params(virDomainPtr dom, QEMU_MIGRATION_SOURCE))) goto cleanup; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainMigratePerform3ParamsEnsureACL(dom->conn, vm->def) < 0) @@ -13453,7 +13424,7 @@ qemuDomainMigrateConfirm3(virDomainPtr domain, virCheckFlags(QEMU_MIGRATION_FLAGS, -1); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return -1; if (virDomainMigrateConfirm3EnsureACL(domain->conn, vm->def) < 0) { @@ -13481,7 +13452,7 @@ qemuDomainMigrateConfirm3Params(virDomainPtr domain, if (virTypedParamsValidate(params, nparams, QEMU_MIGRATION_PARAMETERS)= < 0) return -1; - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return -1; if (virDomainMigrateConfirm3ParamsEnsureACL(domain->conn, vm->def) < 0= ) { @@ -14055,7 +14026,7 @@ qemuDomainGetJobInfo(virDomainPtr dom, virDomainObjPtr vm; int ret =3D -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetJobInfoEnsureACL(dom->conn, vm->def) < 0) @@ -14095,7 +14066,7 @@ qemuDomainGetJobStats(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_JOB_STATS_COMPLETED, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetJobStatsEnsureACL(dom->conn, vm->def) < 0) @@ -14132,7 +14103,7 @@ static int qemuDomainAbortJob(virDomainPtr dom) qemuDomainObjPrivatePtr priv; int reason; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainAbortJobEnsureACL(dom->conn, vm->def) < 0) @@ -14203,7 +14174,7 @@ qemuDomainMigrateSetMaxDowntime(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainMigrateSetMaxDowntimeEnsureACL(dom->conn, vm->def) < 0) @@ -14245,7 +14216,7 @@ qemuDomainMigrateGetMaxDowntime(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainMigrateGetMaxDowntimeEnsureACL(dom->conn, vm->def) < 0) @@ -14298,7 +14269,7 @@ qemuDomainMigrateGetCompressionCache(virDomainPtr d= om, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainMigrateGetCompressionCacheEnsureACL(dom->conn, vm->def) <= 0) @@ -14346,7 +14317,7 @@ qemuDomainMigrateSetCompressionCache(virDomainPtr d= om, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainMigrateSetCompressionCacheEnsureACL(dom->conn, vm->def) <= 0) @@ -14398,7 +14369,7 @@ qemuDomainMigrateSetMaxSpeed(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_MIGRATE_MAX_SPEED_POSTCOPY, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -14530,7 +14501,7 @@ qemuDomainMigrateGetMaxSpeed(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_MIGRATE_MAX_SPEED_POSTCOPY, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -14564,7 +14535,7 @@ qemuDomainMigrateStartPostCopy(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainMigrateStartPostCopyEnsureACL(dom->conn, vm->def) < 0) @@ -15899,7 +15870,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, if (redefine) parse_flags |=3D VIR_DOMAIN_SNAPSHOT_PARSE_REDEFINE; - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) goto cleanup; if (virDomainListCheckpoints(vm->checkpoints, NULL, domain, NULL, 0) >= 0) { @@ -16177,7 +16148,7 @@ qemuDomainSnapshotListNames(virDomainPtr domain, VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL | VIR_DOMAIN_SNAPSHOT_FILTERS_ALL, -1); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return -1; if (virDomainSnapshotListNamesEnsureACL(domain->conn, vm->def) < 0) @@ -16203,7 +16174,7 @@ qemuDomainSnapshotNum(virDomainPtr domain, VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL | VIR_DOMAIN_SNAPSHOT_FILTERS_ALL, -1); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return -1; if (virDomainSnapshotNumEnsureACL(domain->conn, vm->def) < 0) @@ -16229,7 +16200,7 @@ qemuDomainListAllSnapshots(virDomainPtr domain, VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL | VIR_DOMAIN_SNAPSHOT_FILTERS_ALL, -1); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return -1; if (virDomainListAllSnapshotsEnsureACL(domain->conn, vm->def) < 0) @@ -16346,7 +16317,7 @@ qemuDomainSnapshotLookupByName(virDomainPtr domain, virCheckFlags(0, NULL); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return NULL; if (virDomainSnapshotLookupByNameEnsureACL(domain->conn, vm->def) < 0) @@ -16372,7 +16343,7 @@ qemuDomainHasCurrentSnapshot(virDomainPtr domain, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return -1; if (virDomainHasCurrentSnapshotEnsureACL(domain->conn, vm->def) < 0) @@ -16430,7 +16401,7 @@ qemuDomainSnapshotCurrent(virDomainPtr domain, virCheckFlags(0, NULL); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return NULL; if (virDomainSnapshotCurrentEnsureACL(domain->conn, vm->def) < 0) @@ -17296,7 +17267,7 @@ qemuDomainCheckpointCreateXML(virDomainPtr domain, update_current =3D false; } - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) goto cleanup; if (virDomainSnapshotObjListNum(vm->snapshots, NULL, 0) > 0) { @@ -17440,7 +17411,7 @@ qemuDomainListAllCheckpoints(virDomainPtr domain, VIR_DOMAIN_CHECKPOINT_LIST_TOPOLOGICAL | VIR_DOMAIN_CHECKPOINT_FILTERS_ALL, -1); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return -1; if (virDomainListAllCheckpointsEnsureACL(domain->conn, vm->def) < 0) @@ -17497,7 +17468,7 @@ qemuDomainCheckpointLookupByName(virDomainPtr domai= n, virCheckFlags(0, NULL); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return NULL; if (virDomainCheckpointLookupByNameEnsureACL(domain->conn, vm->def) < = 0) @@ -17702,7 +17673,7 @@ static int qemuDomainQemuMonitorCommand(virDomainPt= r domain, const char *cmd, virCheckFlags(VIR_DOMAIN_QEMU_MONITOR_COMMAND_HMP, -1); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) goto cleanup; if (virDomainQemuMonitorCommandEnsureACL(domain->conn, vm->def) < 0) @@ -17749,7 +17720,7 @@ qemuDomainOpenConsole(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_CONSOLE_SAFE | VIR_DOMAIN_CONSOLE_FORCE, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainOpenConsoleEnsureACL(dom->conn, vm->def) < 0) @@ -17826,7 +17797,7 @@ qemuDomainOpenChannel(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_CHANNEL_FORCE, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainOpenChannelEnsureACL(dom->conn, vm->def) < 0) @@ -18094,7 +18065,7 @@ qemuDomainBlockJobAbort(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_BLOCK_JOB_ABORT_ASYNC | VIR_DOMAIN_BLOCK_JOB_ABORT_PIVOT, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainBlockJobAbortEnsureACL(dom->conn, vm->def) < 0) @@ -18256,7 +18227,7 @@ qemuDomainGetBlockJobInfo(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_BLOCK_JOB_INFO_BANDWIDTH_BYTES, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainGetBlockJobInfoEnsureACL(dom->conn, vm->def) < 0) @@ -18328,7 +18299,7 @@ qemuDomainBlockJobSetSpeed(virDomainPtr dom, speed <<=3D 20; } - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainBlockJobSetSpeedEnsureACL(dom->conn, vm->def) < 0) @@ -18786,7 +18757,7 @@ qemuDomainBlockRebase(virDomainPtr dom, const char = *path, const char *base, VIR_DOMAIN_BLOCK_REBASE_COPY_DEV | VIR_DOMAIN_BLOCK_REBASE_BANDWIDTH_BYTES, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainBlockRebaseEnsureACL(dom->conn, vm->def) < 0) @@ -18876,7 +18847,7 @@ qemuDomainBlockCopy(virDomainPtr dom, const char *d= isk, const char *destxml, NULL) < 0) return -1; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainBlockCopyEnsureACL(dom->conn, vm->def) < 0) @@ -18942,7 +18913,7 @@ qemuDomainBlockPull(virDomainPtr dom, const char *p= ath, unsigned long bandwidth, virDomainObjPtr vm; virCheckFlags(VIR_DOMAIN_BLOCK_PULL_BANDWIDTH_BYTES, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainBlockPullEnsureACL(dom->conn, vm->def) < 0) { @@ -19000,7 +18971,7 @@ qemuDomainBlockCommit(virDomainPtr dom, VIR_DOMAIN_BLOCK_COMMIT_RELATIVE | VIR_DOMAIN_BLOCK_COMMIT_BANDWIDTH_BYTES, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -19223,7 +19194,7 @@ qemuDomainOpenGraphics(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainOpenGraphicsEnsureACL(dom->conn, vm->def) < 0) @@ -19295,7 +19266,7 @@ qemuDomainOpenGraphicsFD(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainOpenGraphicsFdEnsureACL(dom->conn, vm->def) < 0) @@ -19512,7 +19483,7 @@ qemuDomainSetBlockIoTune(virDomainPtr dom, memset(&info, 0, sizeof(info)); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; if (virDomainSetBlockIoTuneEnsureACL(dom->conn, vm->def, flags) < 0) @@ -19809,7 +19780,7 @@ qemuDomainGetBlockIoTune(virDomainPtr dom, /* We don't return strings, and thus trivially support this flag. */ flags &=3D ~VIR_TYPED_PARAM_STRING_OKAY; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; priv =3D vm->privateData; @@ -19956,7 +19927,7 @@ qemuDomainGetDiskErrors(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -20036,7 +20007,7 @@ qemuDomainSetMetadata(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_AFFECT_LIVE | VIR_DOMAIN_AFFECT_CONFIG, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return -1; cfg =3D virQEMUDriverGetConfig(driver); @@ -20078,7 +20049,7 @@ qemuDomainGetMetadata(virDomainPtr dom, virDomainObjPtr vm; char *ret =3D NULL; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return NULL; if (virDomainGetMetadataEnsureACL(dom->conn, vm->def) < 0) @@ -20107,7 +20078,7 @@ qemuDomainGetCPUStats(virDomainPtr domain, virCheckFlags(VIR_TYPED_PARAM_STRING_OKAY, -1); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) return -1; priv =3D vm->privateData; @@ -20191,7 +20162,7 @@ qemuDomainPMSuspendForDuration(virDomainPtr dom, return -1; } - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainPMSuspendForDurationEnsureACL(dom->conn, vm->def) < 0) @@ -20274,7 +20245,7 @@ qemuDomainPMWakeup(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainPMWakeupEnsureACL(dom->conn, vm->def) < 0) @@ -20335,7 +20306,7 @@ qemuDomainQemuAgentCommand(virDomainPtr domain, virCheckFlags(0, NULL); - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) goto cleanup; if (virDomainQemuAgentCommandEnsureACL(domain->conn, vm->def) < 0) @@ -20435,7 +20406,7 @@ qemuDomainFSTrim(virDomainPtr dom, return -1; } - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainFSTrimEnsureACL(dom->conn, vm->def) < 0) @@ -20615,7 +20586,7 @@ qemuDomainGetHostname(virDomainPtr dom, virCheckFlags(0, NULL); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return NULL; if (virDomainGetHostnameEnsureACL(dom->conn, vm->def) < 0) @@ -20657,7 +20628,7 @@ qemuDomainGetTime(virDomainPtr dom, virCheckFlags(0, ret); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return ret; if (virDomainGetTimeEnsureACL(dom->conn, vm->def) < 0) @@ -20706,7 +20677,7 @@ qemuDomainSetTime(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_TIME_SYNC, ret); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return ret; if (virDomainSetTimeEnsureACL(dom->conn, vm->def) < 0) @@ -20781,7 +20752,7 @@ qemuDomainFSFreeze(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainFSFreezeEnsureACL(dom->conn, vm->def) < 0) @@ -20822,7 +20793,7 @@ qemuDomainFSThaw(virDomainPtr dom, return ret; } - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainFSThawEnsureACL(dom->conn, vm->def) < 0) @@ -22277,7 +22248,7 @@ qemuDomainGetFSInfo(virDomainPtr dom, virCheckFlags(0, ret); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return ret; if (virDomainGetFSInfoEnsureACL(dom->conn, vm->def) < 0) @@ -22319,7 +22290,7 @@ qemuDomainInterfaceAddresses(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainInterfaceAddressesEnsureACL(dom->conn, vm->def) < 0) @@ -22537,7 +22508,7 @@ qemuDomainSetUserPassword(virDomainPtr dom, virCheckFlags(VIR_DOMAIN_PASSWORD_ENCRYPTED, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) return ret; if (virDomainSetUserPasswordEnsureACL(dom->conn, vm->def) < 0) @@ -22697,7 +22668,7 @@ static int qemuDomainRename(virDomainPtr dom, virCheckFlags(0, ret); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainRenameEnsureACL(dom->conn, vm->def) < 0) @@ -22837,7 +22808,7 @@ qemuDomainGetGuestVcpus(virDomainPtr dom, virCheckFlags(0, ret); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetGuestVcpusEnsureACL(dom->conn, vm->def) < 0) @@ -22896,7 +22867,7 @@ qemuDomainSetGuestVcpus(virDomainPtr dom, if (virBitmapParse(cpumap, &map, QEMU_GUEST_VCPU_MAX_ID) < 0) goto cleanup; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainSetGuestVcpusEnsureACL(dom->conn, vm->def) < 0) @@ -22989,7 +22960,7 @@ qemuDomainSetVcpu(virDomainPtr dom, goto cleanup; } - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainSetVcpuEnsureACL(dom->conn, vm->def, flags) < 0) @@ -23047,7 +23018,7 @@ qemuDomainSetBlockThreshold(virDomainPtr dom, virCheckFlags(0, -1); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -23143,7 +23114,7 @@ qemuDomainSetLifecycleAction(virDomainPtr dom, if (!virDomainDefLifecycleActionAllowed(type, action)) goto cleanup; - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; priv =3D vm->privateData; @@ -23317,7 +23288,7 @@ qemuDomainGetLaunchSecurityInfo(virDomainPtr domain, virDomainObjPtr vm; int ret =3D -1; - if (!(vm =3D qemuDomObjFromDomain(domain))) + if (!(vm =3D qemuDomainObjFromDomain(domain))) goto cleanup; if (virDomainGetLaunchSecurityInfoEnsureACL(domain->conn, vm->def) < 0) @@ -23370,7 +23341,7 @@ qemuDomainGetGuestInfo(virDomainPtr dom, virCheckFlags(0, -1); qemuDomainGetGuestInfoCheckSupport(&supportedTypes); - if (!(vm =3D qemuDomObjFromDomain(dom))) + if (!(vm =3D qemuDomainObjFromDomain(dom))) goto cleanup; if (virDomainGetGuestInfoEnsureACL(dom->conn, vm->def) < 0) --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 11:52:47 2024 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568982089; cv=none; d=zoho.com; s=zohoarc; b=Ccsu0r5IrlU7b7KScg4iqA8AHH0cCd7nc0kMCV3zjC44P/ty7AOSHMlWdo0aG6baWjXG0JEwtpIzdf0l8aveq5eqll/tZUaSM/cACUFfPL6uX4UbLuC+6F5MmFe0UhhTL9R8sBWIX284J+sMnPH/4xjzMrGhUU+d9K9gELNFu5M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568982089; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=pxn7YTWlUmQn0IpT9QgF2iKQQHXSxfz70tCqXRt6hlo=; b=cFONxYsAWIdOnv/UCuPPH5qBgCy2vzcJgIlHgGc4Fy2AjEu0JsrteiJV17mfhG6mNBvMV/j4yEG2EBf2fT+SabKMdvj8DmGAo9mxFuiuo6JXv4/nvmQyoHckrlVZWnpmaa+WWwxrFPGckuclkXeMwRoUNuPN5u0Tp6LMWBox+RY= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1568982089438770.9649600963701; Fri, 20 Sep 2019 05:21:29 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id A68C590C99; Fri, 20 Sep 2019 12:21:27 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 840755D9C3; Fri, 20 Sep 2019 12:21:27 +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 46B944EE6A; Fri, 20 Sep 2019 12:21:27 +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 x8KCLQ6m006741 for ; Fri, 20 Sep 2019 08:21:26 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0EA94608C2; Fri, 20 Sep 2019 12:21:26 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8CE6D60920 for ; Fri, 20 Sep 2019 12:21:25 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 20 Sep 2019 14:21:15 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 2/7] conf: Drop pointless 'domain' argument from virDomainCheckpointRedefinePrep 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: , 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.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.29]); Fri, 20 Sep 2019 12:21:28 +0000 (UTC) Content-Type: text/plain; charset="utf-8" 'vm' is passed in which contains the definition which contains the UUID so we don't need another parameter for this. Signed-off-by: Peter Krempa --- src/conf/checkpoint_conf.c | 7 +++---- src/conf/checkpoint_conf.h | 3 +-- src/qemu/qemu_driver.c | 2 +- src/test/test_driver.c | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/conf/checkpoint_conf.c b/src/conf/checkpoint_conf.c index 5c998267aa..a83863adcc 100644 --- a/src/conf/checkpoint_conf.c +++ b/src/conf/checkpoint_conf.c @@ -532,8 +532,7 @@ virDomainCheckpointDefFormat(virDomainCheckpointDefPtr = def, int -virDomainCheckpointRedefinePrep(virDomainPtr domain, - virDomainObjPtr vm, +virDomainCheckpointRedefinePrep(virDomainObjPtr vm, virDomainCheckpointDefPtr *defptr, virDomainMomentObjPtr *chk, virDomainXMLOptionPtr xmlopt, @@ -544,13 +543,13 @@ virDomainCheckpointRedefinePrep(virDomainPtr domain, virDomainMomentObjPtr other =3D NULL; virDomainCheckpointDefPtr otherdef =3D NULL; - virUUIDFormat(domain->uuid, uuidstr); + virUUIDFormat(vm->def->uuid, uuidstr); if (virDomainCheckpointCheckCycles(vm->checkpoints, def, vm->def->name= ) < 0) return -1; if (!def->parent.dom || - memcmp(def->parent.dom->uuid, domain->uuid, VIR_UUID_BUFLEN)) { + memcmp(def->parent.dom->uuid, vm->def->uuid, VIR_UUID_BUFLEN)) { virReportError(VIR_ERR_INVALID_ARG, _("definition for checkpoint %s must use uuid %s"), def->parent.name, uuidstr); diff --git a/src/conf/checkpoint_conf.h b/src/conf/checkpoint_conf.h index 47ff69eb4d..2be041ff56 100644 --- a/src/conf/checkpoint_conf.h +++ b/src/conf/checkpoint_conf.h @@ -90,8 +90,7 @@ virDomainCheckpointDefFormat(virDomainCheckpointDefPtr de= f, int virDomainCheckpointAlignDisks(virDomainCheckpointDefPtr checkpoint); -int virDomainCheckpointRedefinePrep(virDomainPtr domain, - virDomainObjPtr vm, +int virDomainCheckpointRedefinePrep(virDomainObjPtr vm, virDomainCheckpointDefPtr *def, virDomainMomentObjPtr *checkpoint, virDomainXMLOptionPtr xmlopt, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 21ab58e4ec..ad14b864f7 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -17313,7 +17313,7 @@ qemuDomainCheckpointCreateXML(virDomainPtr domain, goto cleanup; if (redefine) { - if (virDomainCheckpointRedefinePrep(domain, vm, &def, &chk, + if (virDomainCheckpointRedefinePrep(vm, &def, &chk, driver->xmlopt, &update_current) < 0) goto endjob; diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 9df7840390..dafd8c8daa 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -9073,7 +9073,7 @@ testDomainCheckpointCreateXML(virDomainPtr domain, goto cleanup; if (redefine) { - if (virDomainCheckpointRedefinePrep(domain, vm, &def, &chk, + if (virDomainCheckpointRedefinePrep(vm, &def, &chk, privconn->xmlopt, &update_current) < 0) goto cleanup; --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 11:52:47 2024 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568982092; cv=none; d=zoho.com; s=zohoarc; b=aBAKVSh84m9IcOgTZ9umEUTAKmkDthsE75XOPAxgh5zKUoUG77QivcritAFgmXkDDneGKg6IZ7UfCo0yoBOnQdK1vANG0Ji9m5BKj5ukdwHL7im24MvavN3vmIwI1X32rjypu/1WIDljDWQlXPyW+bUJ2SkVXL+CP27Hw6N5PfM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568982092; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=b7Y/nCPvGtLfvS8UeYmhpXBLVeP1E0vX5qfAtGMUrjg=; b=T91q7Di/AHG3pcCXv+LalemO0PmILtn75msW7IPq8S3Q2lFkGD3n35QL4+tORSpDmh8JS63i95NGSygQ2kxY5gevukW5It/6vM8EjfiM7bvCHRY4MHbfW0Gr3fluSZ9JUQJuMNKKFAu7Qs0VmIBUGQVYvdu7R34Xh+qPEf+xXhs= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1568982092744787.7705724103271; Fri, 20 Sep 2019 05:21:32 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E6B37302C085; Fri, 20 Sep 2019 12:21:30 +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 BD49819D70; Fri, 20 Sep 2019 12:21:30 +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 81372180B536; Fri, 20 Sep 2019 12:21:30 +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 x8KCLQm7006746 for ; Fri, 20 Sep 2019 08:21:26 -0400 Received: by smtp.corp.redhat.com (Postfix) id D2AE6608C2; Fri, 20 Sep 2019 12:21:26 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5BD7160920 for ; Fri, 20 Sep 2019 12:21:26 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 20 Sep 2019 14:21:16 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 3/7] conf: Drop pointless 'domain' argument from virDomainSnapshotRedefinePrep 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: , Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Fri, 20 Sep 2019 12:21:31 +0000 (UTC) Content-Type: text/plain; charset="utf-8" 'vm' is passed in which contains the definition which contains the UUID so we don't need another parameter for this. Signed-off-by: Peter Krempa --- src/conf/snapshot_conf.c | 5 ++--- src/conf/snapshot_conf.h | 3 +-- src/qemu/qemu_driver.c | 2 +- src/test/test_driver.c | 2 +- 4 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index 61c807a71f..96ad8ca953 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -986,8 +986,7 @@ virDomainSnapshotIsExternal(virDomainMomentObjPtr snap) } int -virDomainSnapshotRedefinePrep(virDomainPtr domain, - virDomainObjPtr vm, +virDomainSnapshotRedefinePrep(virDomainObjPtr vm, virDomainSnapshotDefPtr *defptr, virDomainMomentObjPtr *snap, virDomainXMLOptionPtr xmlopt, @@ -1006,7 +1005,7 @@ virDomainSnapshotRedefinePrep(virDomainPtr domain, if (other) otherdef =3D virDomainSnapshotObjGetDef(other); check_if_stolen =3D other && otherdef->parent.dom; - if (virDomainSnapshotRedefineValidate(def, domain->uuid, other, xmlopt, + if (virDomainSnapshotRedefineValidate(def, vm->def->uuid, other, xmlop= t, flags) < 0) { /* revert any stealing of the snapshot domain definition */ if (check_if_stolen && def->parent.dom && !otherdef->parent.dom) diff --git a/src/conf/snapshot_conf.h b/src/conf/snapshot_conf.h index 216726fc16..17d614a7e1 100644 --- a/src/conf/snapshot_conf.h +++ b/src/conf/snapshot_conf.h @@ -129,8 +129,7 @@ int virDomainSnapshotAlignDisks(virDomainSnapshotDefPtr= snapshot, bool virDomainSnapshotDefIsExternal(virDomainSnapshotDefPtr def); bool virDomainSnapshotIsExternal(virDomainMomentObjPtr snap); -int virDomainSnapshotRedefinePrep(virDomainPtr domain, - virDomainObjPtr vm, +int virDomainSnapshotRedefinePrep(virDomainObjPtr vm, virDomainSnapshotDefPtr *def, virDomainMomentObjPtr *snap, virDomainXMLOptionPtr xmlopt, diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index ad14b864f7..69467c21f6 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -15985,7 +15985,7 @@ qemuDomainSnapshotCreateXML(virDomainPtr domain, qemuDomainObjSetAsyncJobMask(vm, QEMU_JOB_NONE); if (redefine) { - if (virDomainSnapshotRedefinePrep(domain, vm, &def, &snap, + if (virDomainSnapshotRedefinePrep(vm, &def, &snap, driver->xmlopt, &update_current, flags) < 0) goto endjob; diff --git a/src/test/test_driver.c b/src/test/test_driver.c index dafd8c8daa..19b8158ed6 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -8612,7 +8612,7 @@ testDomainSnapshotCreateXML(virDomainPtr domain, goto cleanup; if (redefine) { - if (virDomainSnapshotRedefinePrep(domain, vm, &def, &snap, + if (virDomainSnapshotRedefinePrep(vm, &def, &snap, privconn->xmlopt, &update_current, flags) < 0) goto cleanup; --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 11:52:47 2024 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568982098; cv=none; d=zoho.com; s=zohoarc; b=YCnZadiQfFV9l3tbZfofnTypx7FNtAt+Xpdd8U/YEJa+iVm4CS0ZaK0Lxz0b17EVSASPuCxk9Ma0Pbe0+zMuAgXy01mARTfrMkLQWnFlQZUOHOP0UDKK8qc3Mckfz3BMd8CKbV4G2eP+6ugUtNHouA4n5So2qNEZfZfU53CtbwE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568982098; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=JcNb0enRPhJhkRESbYS36TUhBRgKn+piaLOenjhFQk4=; b=Fzsolz/ZrLsCcF5QzrAnCpRUYyLQu9lLyIN16rZgza/HRQhOTbh/u2MTnEpyRZAVa9ICzirwEqaCh9r1J8vbvZvCh+Xlr+kFnzjdCPg4+wCtu6uP1qgqIFdlAg99yPvDpv9MW+RM/g3kg2niswIPSCTuy3mWsQcOnz2j7lG0+Jg= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1568982098383155.06558594432136; Fri, 20 Sep 2019 05:21:38 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 9795069081; Fri, 20 Sep 2019 12:21:36 +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 72DD36061E; Fri, 20 Sep 2019 12:21:36 +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 317D9180B536; Fri, 20 Sep 2019 12:21:36 +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 x8KCLRn8006754 for ; Fri, 20 Sep 2019 08:21:27 -0400 Received: by smtp.corp.redhat.com (Postfix) id A2B55608C2; Fri, 20 Sep 2019 12:21:27 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id 2BAC06061E for ; Fri, 20 Sep 2019 12:21:27 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 20 Sep 2019 14:21:17 +0200 Message-Id: <169e350267e85275b12eaf6dfc3d1d1b2269c311.1568981923.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 4/7] qemu: driver: Remove misplaced qemuDomainObjEndJob in qemuDomainCheckpointGetXMLDesc 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: , 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.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Fri, 20 Sep 2019 12:21:37 +0000 (UTC) Content-Type: text/plain; charset="utf-8" The code that gets the job to refresh disk sizes was not merged yet so remove this artifact. Signed-off-by: Peter Krempa --- src/qemu/qemu_driver.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 69467c21f6..485b38ebac 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -17547,9 +17547,6 @@ qemuDomainCheckpointGetXMLDesc(virDomainCheckpointP= tr checkpoint, xml =3D virDomainCheckpointDefFormat(chkdef, driver->caps, driver->xml= opt, format_flags); - if (flags & VIR_DOMAIN_CHECKPOINT_XML_SIZE) - qemuDomainObjEndJob(driver, vm); - cleanup: virDomainObjEndAPI(&vm); return xml; --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 11:52:47 2024 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568982105; cv=none; d=zoho.com; s=zohoarc; b=hv0dsaKqAfUNRYuZS1kqvojLj8rXhz/ceZZtjmO3kU8QCfyV78RAzSGdtkfz0x6k+t8dbSEIx9dnEF4zKyXqc5UDiHOm5I2j72ZtAjpxkQJlM+fKqRsP4RUNEoZawf89WnhLhKuHtrGGbMjc78V1woTv6KI0+pNN2IVIypN+aT0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568982105; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=eLmU2QwxX4gw1OG9p1lXabzFTdR9Db4XPlQ35mZMifs=; b=O2xLInL5wmGvIThLTWDAB2JXVKct3o24VQZbPsF77WUIRVdvOi40EEqMCvwAisZSC9fMe3A1cSE7qS5cL20pOdRmy1VlkFzhlz4PL/vrZNhWQVSa7phe+nAHErpIj1Uojr/BGNy1BhVLnHKXNL7qX/2sdNavr7dpVBg1KSg5pPk= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1568982105554862.4234816900861; Fri, 20 Sep 2019 05:21:45 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id F32603082E6E; Fri, 20 Sep 2019 12:21:42 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 917F65C22C; Fri, 20 Sep 2019 12:21:42 +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 24F594EE7E; Fri, 20 Sep 2019 12:21:42 +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 x8KCLSSd006766 for ; Fri, 20 Sep 2019 08:21:28 -0400 Received: by smtp.corp.redhat.com (Postfix) id 99A99608C2; Fri, 20 Sep 2019 12:21:28 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id F08026061E for ; Fri, 20 Sep 2019 12:21:27 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 20 Sep 2019 14:21:18 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 5/7] qemu: driver: Move checkpoint-related code to qemu_checkpoint.c 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: , 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.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.46]); Fri, 20 Sep 2019 12:21:44 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Move all extensive functions to a new file so that we don't just pile everything in the common files. This obviously isn't possible with straight code movement as we still need stubs in qemu_driver.c Additionally some functions e.g. for looking up a checkpoint by name were so short that moving the impl didn't make sense. Note that in the move the new file also doesn't use virQEMUMomentReparent but rather an stripped down copy. As I plan to split out snapshot code into a separate file the unification doesn't make sense any more. Signed-off-by: Peter Krempa --- src/qemu/Makefile.inc.am | 2 + src/qemu/qemu_checkpoint.c | 483 +++++++++++++++++++++++++++++++++++++ src/qemu/qemu_checkpoint.h | 50 ++++ src/qemu/qemu_driver.c | 379 +---------------------------- 4 files changed, 540 insertions(+), 374 deletions(-) create mode 100644 src/qemu/qemu_checkpoint.c create mode 100644 src/qemu/qemu_checkpoint.h diff --git a/src/qemu/Makefile.inc.am b/src/qemu/Makefile.inc.am index 48fd0332ec..71fb07b638 100644 --- a/src/qemu/Makefile.inc.am +++ b/src/qemu/Makefile.inc.am @@ -62,6 +62,8 @@ QEMU_DRIVER_SOURCES =3D \ qemu/qemu_slirp.h \ qemu/qemu_tpm.c \ qemu/qemu_tpm.h \ + qemu/qemu_checkpoint.c \ + qemu/qemu_checkpoint.h \ $(NULL) diff --git a/src/qemu/qemu_checkpoint.c b/src/qemu/qemu_checkpoint.c new file mode 100644 index 0000000000..9e9af76871 --- /dev/null +++ b/src/qemu/qemu_checkpoint.c @@ -0,0 +1,483 @@ +/* + * qemu_checkpoint.c: checkpoint related implementation + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ + +#include + +#include + +#include "qemu_checkpoint.h" +#include "qemu_capabilities.h" +#include "qemu_monitor.h" +#include "qemu_monitor_json.h" +#include "qemu_domain.h" + +#include "virerror.h" +#include "virlog.h" +#include "datatypes.h" +#include "viralloc.h" +#include "domain_conf.h" +#include "libvirt_internal.h" +#include "virxml.h" +#include "virstring.h" +#include "virdomaincheckpointobjlist.h" +#include "virdomainsnapshotobjlist.h" + +#define VIR_FROM_THIS VIR_FROM_QEMU + +VIR_LOG_INIT("qemu.qemu_checkpoint"); + +/* Looks up the domain object from checkpoint and unlocks the + * driver. The returned domain object is locked and ref'd and the + * caller must call virDomainObjEndAPI() on it. */ +virDomainObjPtr +qemuDomObjFromCheckpoint(virDomainCheckpointPtr checkpoint) +{ + return qemuDomainObjFromDomain(checkpoint->domain); +} + + +/* Looks up checkpoint object from VM and name */ +virDomainMomentObjPtr +qemuCheckpointObjFromName(virDomainObjPtr vm, + const char *name) +{ + virDomainMomentObjPtr chk =3D NULL; + chk =3D virDomainCheckpointFindByName(vm->checkpoints, name); + if (!chk) + virReportError(VIR_ERR_NO_DOMAIN_CHECKPOINT, + _("no domain checkpoint with matching name '%s'"), + name); + + return chk; +} + + +/* Looks up checkpoint object from VM and checkpointPtr */ +virDomainMomentObjPtr +qemuCheckpointObjFromCheckpoint(virDomainObjPtr vm, + virDomainCheckpointPtr checkpoint) +{ + return qemuCheckpointObjFromName(vm, checkpoint->name); +} + + +/* Called inside job lock */ +static int +qemuDomainCheckpointPrepare(virQEMUDriverPtr driver, virCapsPtr caps, + virDomainObjPtr vm, + virDomainCheckpointDefPtr def) +{ + int ret =3D -1; + size_t i; + char *xml =3D NULL; + qemuDomainObjPrivatePtr priv =3D vm->privateData; + + /* Easiest way to clone inactive portion of vm->def is via + * conversion in and back out of xml. */ + if (!(xml =3D qemuDomainDefFormatLive(driver, priv->qemuCaps, + vm->def, priv->origCPU, + true, true)) || + !(def->parent.dom =3D virDomainDefParseString(xml, caps, driver->x= mlopt, + priv->qemuCaps, + VIR_DOMAIN_DEF_PARSE_I= NACTIVE | + VIR_DOMAIN_DEF_PARSE_S= KIP_VALIDATE))) + goto cleanup; + + if (virDomainCheckpointAlignDisks(def) < 0) + goto cleanup; + + for (i =3D 0; i < def->ndisks; i++) { + virDomainCheckpointDiskDefPtr disk =3D &def->disks[i]; + + if (disk->type !=3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP) + continue; + + if (vm->def->disks[i]->src->format !=3D VIR_STORAGE_FILE_QCOW2) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("checkpoint for disk %s unsupported " + "for storage type %s"), + disk->name, + virStorageFileFormatTypeToString( + vm->def->disks[i]->src->format)); + goto cleanup; + } + } + + ret =3D 0; + + cleanup: + VIR_FREE(xml); + return ret; +} + +static int +qemuDomainCheckpointAddActions(virDomainObjPtr vm, + virJSONValuePtr actions, + virDomainMomentObjPtr old_current, + virDomainCheckpointDefPtr def) +{ + size_t i, j; + virDomainCheckpointDefPtr olddef; + virDomainMomentObjPtr parent; + bool search_parents; + + for (i =3D 0; i < def->ndisks; i++) { + virDomainCheckpointDiskDef *disk =3D &def->disks[i]; + const char *node; + + if (disk->type !=3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP) + continue; + node =3D qemuDomainDiskNodeFormatLookup(vm, disk->name); + if (qemuMonitorJSONTransactionAdd(actions, + "block-dirty-bitmap-add", + "s:node", node, + "s:name", disk->bitmap, + "b:persistent", true, + NULL) < 0) + return -1; + + /* We only want one active bitmap for a disk along the + * checkpoint chain, then later differential backups will + * merge the bitmaps (only one active) between the bounding + * checkpoint and the leaf checkpoint. If the same disks are + * involved in each checkpoint, this search terminates in one + * iteration; but it is also possible to have to search + * further than the immediate parent to find another + * checkpoint with a bitmap on the same disk. */ + search_parents =3D true; + for (parent =3D old_current; search_parents && parent; + parent =3D virDomainCheckpointFindByName(vm->checkpoints, + olddef->parent.parent_= name)) { + olddef =3D virDomainCheckpointObjGetDef(parent); + for (j =3D 0; j < olddef->ndisks; j++) { + virDomainCheckpointDiskDef *disk2; + + disk2 =3D &olddef->disks[j]; + if (STRNEQ(disk->name, disk2->name) || + disk2->type !=3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP) + continue; + if (qemuMonitorJSONTransactionAdd(actions, + "block-dirty-bitmap-disa= ble", + "s:node", node, + "s:name", disk2->bitmap, + NULL) < 0) + return -1; + search_parents =3D false; + break; + } + } + } + return 0; +} + + +virDomainCheckpointPtr +qemuCheckpointCreateXML(virDomainPtr domain, + virDomainObjPtr vm, + const char *xmlDesc, + unsigned int flags) +{ + qemuDomainObjPrivatePtr priv =3D vm->privateData; + virQEMUDriverPtr driver =3D priv->driver; + virDomainMomentObjPtr chk =3D NULL; + virDomainCheckpointPtr checkpoint =3D NULL; + bool update_current =3D true; + bool redefine =3D flags & VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE; + unsigned int parse_flags =3D 0; + virDomainMomentObjPtr other =3D NULL; + virQEMUDriverConfigPtr cfg =3D NULL; + virCapsPtr caps =3D NULL; + virJSONValuePtr actions =3D NULL; + int ret; + VIR_AUTOUNREF(virDomainCheckpointDefPtr) def =3D NULL; + + virCheckFlags(VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE, NULL); + /* TODO: VIR_DOMAIN_CHECKPOINT_CREATE_QUIESCE */ + + if (redefine) { + parse_flags |=3D VIR_DOMAIN_CHECKPOINT_PARSE_REDEFINE; + update_current =3D false; + } + + if (virDomainSnapshotObjListNum(vm->snapshots, NULL, 0) > 0) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("cannot create checkpoint while snapshot exists")= ); + goto cleanup; + } + + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BITMAP_MERGE)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("qemu binary lacks persistent bitmaps support")); + goto cleanup; + } + + if (!(caps =3D virQEMUDriverGetCapabilities(driver, false))) + goto cleanup; + + if (!virDomainObjIsActive(vm)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("cannot create checkpoint for inactive domain")); + goto cleanup; + } + + if (!(def =3D virDomainCheckpointDefParseString(xmlDesc, caps, driver-= >xmlopt, + priv->qemuCaps, parse_fl= ags))) + goto cleanup; + /* Unlike snapshots, the RNG schema already ensured a sane filename. */ + + /* We are going to modify the domain below. */ + if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) + goto cleanup; + + if (redefine) { + if (virDomainCheckpointRedefinePrep(vm, &def, &chk, + driver->xmlopt, + &update_current) < 0) + goto endjob; + } else if (qemuDomainCheckpointPrepare(driver, caps, vm, def) < 0) { + goto endjob; + } + + if (!chk) { + if (!(chk =3D virDomainCheckpointAssignDef(vm->checkpoints, def))) + goto endjob; + + def =3D NULL; + } + + other =3D virDomainCheckpointGetCurrent(vm->checkpoints); + if (other) { + if (!redefine && + VIR_STRDUP(chk->def->parent_name, other->def->name) < 0) + goto endjob; + if (update_current) { + virDomainCheckpointSetCurrent(vm->checkpoints, NULL); + if (qemuDomainCheckpointWriteMetadata(vm, other, + driver->caps, driver->xm= lopt, + cfg->checkpointDir) < 0) + goto endjob; + } + } + + /* actually do the checkpoint */ + if (redefine) { + /* XXX Should we validate that the redefined checkpoint even + * makes sense, such as checking that qemu-img recognizes the + * checkpoint bitmap name in at least one of the domain's disks? = */ + } else { + if (!(actions =3D virJSONValueNewArray())) + goto endjob; + if (qemuDomainCheckpointAddActions(vm, actions, other, + virDomainCheckpointObjGetDef(ch= k)) < 0) + goto endjob; + qemuDomainObjEnterMonitor(driver, vm); + ret =3D qemuMonitorTransaction(priv->mon, &actions); + if (qemuDomainObjExitMonitor(driver, vm) < 0 || ret < 0) + goto endjob; + } + + /* If we fail after this point, there's not a whole lot we can do; + * we've successfully created the checkpoint, so we have to go + * forward the best we can. + */ + checkpoint =3D virGetDomainCheckpoint(domain, chk->def->name); + + endjob: + if (checkpoint) { + if (update_current) + virDomainCheckpointSetCurrent(vm->checkpoints, chk); + if (qemuDomainCheckpointWriteMetadata(vm, chk, driver->caps, + driver->xmlopt, + cfg->checkpointDir) < 0) { + /* if writing of metadata fails, error out rather than trying + * to silently carry on without completing the checkpoint */ + virObjectUnref(checkpoint); + checkpoint =3D NULL; + virReportError(VIR_ERR_INTERNAL_ERROR, + _("unable to save metadata for checkpoint %s"), + chk->def->name); + virDomainCheckpointObjListRemove(vm->checkpoints, chk); + } else { + virDomainCheckpointLinkParent(vm->checkpoints, chk); + } + } else if (chk) { + virDomainCheckpointObjListRemove(vm->checkpoints, chk); + } + + qemuDomainObjEndJob(driver, vm); + + cleanup: + virJSONValueFree(actions); + virDomainObjEndAPI(&vm); + virObjectUnref(caps); + virObjectUnref(cfg); + return checkpoint; +} + + +char * +qemuCheckpointGetXMLDesc(virDomainObjPtr vm, + virDomainCheckpointPtr checkpoint, + unsigned int flags) +{ + qemuDomainObjPrivatePtr priv =3D vm->privateData; + virQEMUDriverPtr driver =3D priv->driver; + virDomainMomentObjPtr chk =3D NULL; + virDomainCheckpointDefPtr chkdef; + unsigned int format_flags; + + virCheckFlags(VIR_DOMAIN_CHECKPOINT_XML_SECURE | + VIR_DOMAIN_CHECKPOINT_XML_NO_DOMAIN, NULL); + + if (!(chk =3D qemuCheckpointObjFromCheckpoint(vm, checkpoint))) + return NULL; + + chkdef =3D virDomainCheckpointObjGetDef(chk); + + format_flags =3D virDomainCheckpointFormatConvertXMLFlags(flags); + return virDomainCheckpointDefFormat(chkdef, driver->caps, driver->xmlo= pt, + format_flags); +} + + +struct virQEMUCheckpointReparent { + const char *dir; + virDomainMomentObjPtr parent; + virDomainObjPtr vm; + virCapsPtr caps; + virDomainXMLOptionPtr xmlopt; + int err; +}; + + +static int +qemuCheckpointReparentChildren(void *payload, + const void *name ATTRIBUTE_UNUSED, + void *data) +{ + virDomainMomentObjPtr moment =3D payload; + struct virQEMUCheckpointReparent *rep =3D data; + + if (rep->err < 0) + return 0; + + VIR_FREE(moment->def->parent_name); + + if (rep->parent->def && + VIR_STRDUP(moment->def->parent_name, rep->parent->def->name) < 0) { + rep->err =3D -1; + return 0; + } + + rep->err =3D qemuDomainCheckpointWriteMetadata(rep->vm, moment, rep->c= aps, + rep->xmlopt, rep->dir); + return 0; +} + + +int +qemuCheckpointDelete(virDomainObjPtr vm, + virDomainCheckpointPtr checkpoint, + unsigned int flags) +{ + qemuDomainObjPrivatePtr priv =3D vm->privateData; + virQEMUDriverPtr driver =3D priv->driver; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg =3D virQEMUDriverGetConfig(d= river); + int ret =3D -1; + virDomainMomentObjPtr chk =3D NULL; + virQEMUMomentRemove rem; + struct virQEMUCheckpointReparent rep; + bool metadata_only =3D !!(flags & VIR_DOMAIN_CHECKPOINT_DELETE_METADAT= A_ONLY); + + virCheckFlags(VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN | + VIR_DOMAIN_CHECKPOINT_DELETE_METADATA_ONLY | + VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN_ONLY, -1); + + if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) + return -1; + + if (!metadata_only) { + /* Until qemu-img supports offline bitmap deletion, we are stuck + * with requiring a running guest */ + if (!virDomainObjIsActive(vm)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("cannot delete checkpoint for inactive domain= ")); + goto endjob; + } + if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BITMAP_MERGE)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("qemu binary lacks persistent bitmaps support= ")); + goto endjob; + } + } + + if (!(chk =3D qemuCheckpointObjFromCheckpoint(vm, checkpoint))) + goto endjob; + + if (flags & (VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN | + VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN_ONLY)) { + rem.driver =3D driver; + rem.vm =3D vm; + rem.metadata_only =3D metadata_only; + rem.err =3D 0; + rem.current =3D virDomainCheckpointGetCurrent(vm->checkpoints); + rem.found =3D false; + rem.momentDiscard =3D qemuDomainCheckpointDiscard; + virDomainMomentForEachDescendant(chk, qemuDomainMomentDiscardAll, + &rem); + if (rem.err < 0) + goto endjob; + if (rem.found) { + virDomainCheckpointSetCurrent(vm->checkpoints, chk); + if (flags & VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN_ONLY) { + if (qemuDomainCheckpointWriteMetadata(vm, chk, driver->cap= s, + driver->xmlopt, + cfg->checkpointDir) = < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("failed to set checkpoint '%s' as cur= rent"), + chk->def->name); + virDomainCheckpointSetCurrent(vm->checkpoints, NULL); + goto endjob; + } + } + } + } else if (chk->nchildren) { + rep.dir =3D cfg->checkpointDir; + rep.parent =3D chk->parent; + rep.vm =3D vm; + rep.err =3D 0; + rep.caps =3D driver->caps; + rep.xmlopt =3D driver->xmlopt; + virDomainMomentForEachChild(chk, qemuCheckpointReparentChildren, + &rep); + if (rep.err < 0) + goto endjob; + virDomainMomentMoveChildren(chk, chk->parent); + } + + if (flags & VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN_ONLY) { + virDomainMomentDropChildren(chk); + ret =3D 0; + } else { + ret =3D qemuDomainCheckpointDiscard(driver, vm, chk, true, metadat= a_only); + } + + endjob: + qemuDomainObjEndJob(driver, vm); + return ret; +} diff --git a/src/qemu/qemu_checkpoint.h b/src/qemu/qemu_checkpoint.h new file mode 100644 index 0000000000..0d36d718d6 --- /dev/null +++ b/src/qemu/qemu_checkpoint.h @@ -0,0 +1,50 @@ +/* + * qemu_checkpoint.h: Implementation and handling of checkpoint + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. If not, see + * . + */ + +#pragma once + +#include "virconftypes.h" +#include "datatypes.h" + +virDomainObjPtr +qemuDomObjFromCheckpoint(virDomainCheckpointPtr checkpoint); + +virDomainMomentObjPtr +qemuCheckpointObjFromCheckpoint(virDomainObjPtr vm, + virDomainCheckpointPtr checkpoint); + +virDomainMomentObjPtr +qemuCheckpointObjFromName(virDomainObjPtr vm, + const char *name); + +virDomainCheckpointPtr +qemuCheckpointCreateXML(virDomainPtr domain, + virDomainObjPtr vm, + const char *xmlDesc, + unsigned int flags); + + +char * +qemuCheckpointGetXMLDesc(virDomainObjPtr vm, + virDomainCheckpointPtr checkpoint, + unsigned int flags); + +int +qemuCheckpointDelete(virDomainObjPtr vm, + virDomainCheckpointPtr checkpoint, + unsigned int flags); diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 485b38ebac..89a0b0963d 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -53,6 +53,7 @@ #include "qemu_migration_params.h" #include "qemu_blockjob.h" #include "qemu_security.h" +#include "qemu_checkpoint.h" #include "virerror.h" #include "virlog.h" @@ -195,39 +196,6 @@ qemuSnapObjFromSnapshot(virDomainObjPtr vm, return qemuSnapObjFromName(vm, snapshot->name); } -/* Looks up the domain object from checkpoint and unlocks the - * driver. The returned domain object is locked and ref'd and the - * caller must call virDomainObjEndAPI() on it. */ -static virDomainObjPtr -qemuDomObjFromCheckpoint(virDomainCheckpointPtr checkpoint) -{ - return qemuDomainObjFromDomain(checkpoint->domain); -} - - -/* Looks up checkpoint object from VM and name */ -static virDomainMomentObjPtr -qemuCheckpointObjFromName(virDomainObjPtr vm, - const char *name) -{ - virDomainMomentObjPtr chk =3D NULL; - chk =3D virDomainCheckpointFindByName(vm->checkpoints, name); - if (!chk) - virReportError(VIR_ERR_NO_DOMAIN_CHECKPOINT, - _("no domain checkpoint with matching name '%s'"), - name); - - return chk; -} - - -/* Looks up checkpoint object from VM and checkpointPtr */ -static virDomainMomentObjPtr -qemuCheckpointObjFromCheckpoint(virDomainObjPtr vm, - virDomainCheckpointPtr checkpoint) -{ - return qemuCheckpointObjFromName(vm, checkpoint->name); -} static int qemuAutostartDomain(virDomainObjPtr vm, @@ -17129,272 +17097,26 @@ qemuDomainSnapshotDelete(virDomainSnapshotPtr sn= apshot, } -/* Called inside job lock */ -static int -qemuDomainCheckpointPrepare(virQEMUDriverPtr driver, virCapsPtr caps, - virDomainObjPtr vm, - virDomainCheckpointDefPtr def) -{ - int ret =3D -1; - size_t i; - char *xml =3D NULL; - qemuDomainObjPrivatePtr priv =3D vm->privateData; - - /* Easiest way to clone inactive portion of vm->def is via - * conversion in and back out of xml. */ - if (!(xml =3D qemuDomainDefFormatLive(driver, priv->qemuCaps, - vm->def, priv->origCPU, - true, true)) || - !(def->parent.dom =3D virDomainDefParseString(xml, caps, driver->x= mlopt, - priv->qemuCaps, - VIR_DOMAIN_DEF_PARSE_I= NACTIVE | - VIR_DOMAIN_DEF_PARSE_S= KIP_VALIDATE))) - goto cleanup; - - if (virDomainCheckpointAlignDisks(def) < 0) - goto cleanup; - - for (i =3D 0; i < def->ndisks; i++) { - virDomainCheckpointDiskDefPtr disk =3D &def->disks[i]; - - if (disk->type !=3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP) - continue; - - if (vm->def->disks[i]->src->format !=3D VIR_STORAGE_FILE_QCOW2) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("checkpoint for disk %s unsupported " - "for storage type %s"), - disk->name, - virStorageFileFormatTypeToString( - vm->def->disks[i]->src->format)); - goto cleanup; - } - } - - ret =3D 0; - - cleanup: - VIR_FREE(xml); - return ret; -} - -static int -qemuDomainCheckpointAddActions(virDomainObjPtr vm, - virJSONValuePtr actions, - virDomainMomentObjPtr old_current, - virDomainCheckpointDefPtr def) -{ - size_t i, j; - virDomainCheckpointDefPtr olddef; - virDomainMomentObjPtr parent; - bool search_parents; - - for (i =3D 0; i < def->ndisks; i++) { - virDomainCheckpointDiskDef *disk =3D &def->disks[i]; - const char *node; - - if (disk->type !=3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP) - continue; - node =3D qemuDomainDiskNodeFormatLookup(vm, disk->name); - if (qemuMonitorJSONTransactionAdd(actions, - "block-dirty-bitmap-add", - "s:node", node, - "s:name", disk->bitmap, - "b:persistent", true, - NULL) < 0) - return -1; - - /* We only want one active bitmap for a disk along the - * checkpoint chain, then later differential backups will - * merge the bitmaps (only one active) between the bounding - * checkpoint and the leaf checkpoint. If the same disks are - * involved in each checkpoint, this search terminates in one - * iteration; but it is also possible to have to search - * further than the immediate parent to find another - * checkpoint with a bitmap on the same disk. */ - search_parents =3D true; - for (parent =3D old_current; search_parents && parent; - parent =3D virDomainCheckpointFindByName(vm->checkpoints, - olddef->parent.parent_= name)) { - olddef =3D virDomainCheckpointObjGetDef(parent); - for (j =3D 0; j < olddef->ndisks; j++) { - virDomainCheckpointDiskDef *disk2; - - disk2 =3D &olddef->disks[j]; - if (STRNEQ(disk->name, disk2->name) || - disk2->type !=3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP) - continue; - if (qemuMonitorJSONTransactionAdd(actions, - "block-dirty-bitmap-disa= ble", - "s:node", node, - "s:name", disk2->bitmap, - NULL) < 0) - return -1; - search_parents =3D false; - break; - } - } - } - return 0; -} - static virDomainCheckpointPtr qemuDomainCheckpointCreateXML(virDomainPtr domain, const char *xmlDesc, unsigned int flags) { - virQEMUDriverPtr driver =3D domain->conn->privateData; virDomainObjPtr vm =3D NULL; - char *xml =3D NULL; - virDomainMomentObjPtr chk =3D NULL; virDomainCheckpointPtr checkpoint =3D NULL; - bool update_current =3D true; - bool redefine =3D flags & VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE; - unsigned int parse_flags =3D 0; - virDomainMomentObjPtr other =3D NULL; - virQEMUDriverConfigPtr cfg =3D NULL; - virCapsPtr caps =3D NULL; - qemuDomainObjPrivatePtr priv; - virJSONValuePtr actions =3D NULL; - int ret; - VIR_AUTOUNREF(virDomainCheckpointDefPtr) def =3D NULL; virCheckFlags(VIR_DOMAIN_CHECKPOINT_CREATE_REDEFINE, NULL); - /* TODO: VIR_DOMAIN_CHECKPOINT_CREATE_QUIESCE */ - - if (redefine) { - parse_flags |=3D VIR_DOMAIN_CHECKPOINT_PARSE_REDEFINE; - update_current =3D false; - } if (!(vm =3D qemuDomainObjFromDomain(domain))) goto cleanup; - if (virDomainSnapshotObjListNum(vm->snapshots, NULL, 0) > 0) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", - _("cannot create checkpoint while snapshot exists")= ); - goto cleanup; - } - - priv =3D vm->privateData; - cfg =3D virQEMUDriverGetConfig(driver); - if (virDomainCheckpointCreateXMLEnsureACL(domain->conn, vm->def, flags= ) < 0) goto cleanup; - if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BITMAP_MERGE)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("qemu binary lacks persistent bitmaps support")); - goto cleanup; - } - - if (!(caps =3D virQEMUDriverGetCapabilities(driver, false))) - goto cleanup; - - if (qemuProcessAutoDestroyActive(driver, vm)) { - virReportError(VIR_ERR_OPERATION_INVALID, - "%s", _("domain is marked for auto destroy")); - goto cleanup; - } - - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", - _("cannot create checkpoint for inactive domain")); - goto cleanup; - } - - if (!(def =3D virDomainCheckpointDefParseString(xmlDesc, caps, driver-= >xmlopt, - priv->qemuCaps, parse_fl= ags))) - goto cleanup; - /* Unlike snapshots, the RNG schema already ensured a sane filename. */ - - /* We are going to modify the domain below. */ - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) - goto cleanup; - - if (redefine) { - if (virDomainCheckpointRedefinePrep(vm, &def, &chk, - driver->xmlopt, - &update_current) < 0) - goto endjob; - } else if (qemuDomainCheckpointPrepare(driver, caps, vm, def) < 0) { - goto endjob; - } - - if (!chk) { - if (!(chk =3D virDomainCheckpointAssignDef(vm->checkpoints, def))) - goto endjob; - - def =3D NULL; - } - - other =3D virDomainCheckpointGetCurrent(vm->checkpoints); - if (other) { - if (!redefine && - VIR_STRDUP(chk->def->parent_name, other->def->name) < 0) - goto endjob; - if (update_current) { - virDomainCheckpointSetCurrent(vm->checkpoints, NULL); - if (qemuDomainCheckpointWriteMetadata(vm, other, - driver->caps, driver->xm= lopt, - cfg->checkpointDir) < 0) - goto endjob; - } - } - - /* actually do the checkpoint */ - if (redefine) { - /* XXX Should we validate that the redefined checkpoint even - * makes sense, such as checking that qemu-img recognizes the - * checkpoint bitmap name in at least one of the domain's disks? = */ - } else { - if (!(actions =3D virJSONValueNewArray())) - goto endjob; - if (qemuDomainCheckpointAddActions(vm, actions, other, - virDomainCheckpointObjGetDef(ch= k)) < 0) - goto endjob; - qemuDomainObjEnterMonitor(driver, vm); - ret =3D qemuMonitorTransaction(priv->mon, &actions); - if (qemuDomainObjExitMonitor(driver, vm) < 0 || ret < 0) - goto endjob; - } - - /* If we fail after this point, there's not a whole lot we can do; - * we've successfully created the checkpoint, so we have to go - * forward the best we can. - */ - checkpoint =3D virGetDomainCheckpoint(domain, chk->def->name); - - endjob: - if (checkpoint) { - if (update_current) - virDomainCheckpointSetCurrent(vm->checkpoints, chk); - if (qemuDomainCheckpointWriteMetadata(vm, chk, driver->caps, - driver->xmlopt, - cfg->checkpointDir) < 0) { - /* if writing of metadata fails, error out rather than trying - * to silently carry on without completing the checkpoint */ - virObjectUnref(checkpoint); - checkpoint =3D NULL; - virReportError(VIR_ERR_INTERNAL_ERROR, - _("unable to save metadata for checkpoint %s"), - chk->def->name); - virDomainCheckpointObjListRemove(vm->checkpoints, chk); - } else { - virDomainCheckpointLinkParent(vm->checkpoints, chk); - } - } else if (chk) { - virDomainCheckpointObjListRemove(vm->checkpoints, chk); - } - - qemuDomainObjEndJob(driver, vm); + checkpoint =3D qemuCheckpointCreateXML(domain, vm, xmlDesc, flags); cleanup: - virJSONValueFree(actions); virDomainObjEndAPI(&vm); - VIR_FREE(xml); - virObjectUnref(caps); - virObjectUnref(cfg); return checkpoint; } @@ -17523,12 +17245,8 @@ static char * qemuDomainCheckpointGetXMLDesc(virDomainCheckpointPtr checkpoint, unsigned int flags) { - virQEMUDriverPtr driver =3D checkpoint->domain->conn->privateData; virDomainObjPtr vm =3D NULL; char *xml =3D NULL; - virDomainMomentObjPtr chk =3D NULL; - virDomainCheckpointDefPtr chkdef; - unsigned int format_flags; virCheckFlags(VIR_DOMAIN_CHECKPOINT_XML_SECURE | VIR_DOMAIN_CHECKPOINT_XML_NO_DOMAIN, NULL); @@ -17539,13 +17257,7 @@ qemuDomainCheckpointGetXMLDesc(virDomainCheckpoint= Ptr checkpoint, if (virDomainCheckpointGetXMLDescEnsureACL(checkpoint->domain->conn, v= m->def, flags) < 0) goto cleanup; - if (!(chk =3D qemuCheckpointObjFromCheckpoint(vm, checkpoint))) - goto cleanup; - chkdef =3D virDomainCheckpointObjGetDef(chk); - - format_flags =3D virDomainCheckpointFormatConvertXMLFlags(flags); - xml =3D virDomainCheckpointDefFormat(chkdef, driver->caps, driver->xml= opt, - format_flags); + xml =3D qemuCheckpointGetXMLDesc(vm, checkpoint, flags); cleanup: virDomainObjEndAPI(&vm); @@ -17557,15 +17269,8 @@ static int qemuDomainCheckpointDelete(virDomainCheckpointPtr checkpoint, unsigned int flags) { - virQEMUDriverPtr driver =3D checkpoint->domain->conn->privateData; virDomainObjPtr vm =3D NULL; - qemuDomainObjPrivatePtr priv; int ret =3D -1; - virDomainMomentObjPtr chk =3D NULL; - virQEMUMomentRemove rem; - virQEMUMomentReparent rep; - bool metadata_only =3D !!(flags & VIR_DOMAIN_CHECKPOINT_DELETE_METADAT= A_ONLY); - virQEMUDriverConfigPtr cfg =3D NULL; virCheckFlags(VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN | VIR_DOMAIN_CHECKPOINT_DELETE_METADATA_ONLY | @@ -17574,91 +17279,17 @@ qemuDomainCheckpointDelete(virDomainCheckpointPtr= checkpoint, if (!(vm =3D qemuDomObjFromCheckpoint(checkpoint))) return -1; - cfg =3D virQEMUDriverGetConfig(driver); - if (virDomainCheckpointDeleteEnsureACL(checkpoint->domain->conn, vm->d= ef) < 0) goto cleanup; - if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) - goto cleanup; - - priv =3D vm->privateData; - if (!metadata_only) { - /* Until qemu-img supports offline bitmap deletion, we are stuck - * with requiring a running guest */ - if (!virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", - _("cannot delete checkpoint for inactive domain= ")); - goto endjob; - } - if (!virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_BITMAP_MERGE)) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("qemu binary lacks persistent bitmaps support= ")); - goto endjob; - } - } - - if (!(chk =3D qemuCheckpointObjFromCheckpoint(vm, checkpoint))) - goto endjob; - - if (flags & (VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN | - VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN_ONLY)) { - rem.driver =3D driver; - rem.vm =3D vm; - rem.metadata_only =3D metadata_only; - rem.err =3D 0; - rem.current =3D virDomainCheckpointGetCurrent(vm->checkpoints); - rem.found =3D false; - rem.momentDiscard =3D qemuDomainCheckpointDiscard; - virDomainMomentForEachDescendant(chk, qemuDomainMomentDiscardAll, - &rem); - if (rem.err < 0) - goto endjob; - if (rem.found) { - virDomainCheckpointSetCurrent(vm->checkpoints, chk); - if (flags & VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN_ONLY) { - if (qemuDomainCheckpointWriteMetadata(vm, chk, driver->cap= s, - driver->xmlopt, - cfg->checkpointDir) = < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("failed to set checkpoint '%s' as cur= rent"), - chk->def->name); - virDomainCheckpointSetCurrent(vm->checkpoints, NULL); - goto endjob; - } - } - } - } else if (chk->nchildren) { - rep.dir =3D cfg->checkpointDir; - rep.parent =3D chk->parent; - rep.vm =3D vm; - rep.err =3D 0; - rep.caps =3D driver->caps; - rep.xmlopt =3D driver->xmlopt; - rep.writeMetadata =3D qemuDomainCheckpointWriteMetadata; - virDomainMomentForEachChild(chk, qemuDomainMomentReparentChildren, - &rep); - if (rep.err < 0) - goto endjob; - virDomainMomentMoveChildren(chk, chk->parent); - } - - if (flags & VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN_ONLY) { - virDomainMomentDropChildren(chk); - ret =3D 0; - } else { - ret =3D qemuDomainCheckpointDiscard(driver, vm, chk, true, metadat= a_only); - } - - endjob: - qemuDomainObjEndJob(driver, vm); + ret =3D qemuCheckpointDelete(vm, checkpoint, flags); cleanup: virDomainObjEndAPI(&vm); - virObjectUnref(cfg); return ret; } + static int qemuDomainQemuMonitorCommand(virDomainPtr domain, const char *c= md, char **result, unsigned int flags) { --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 11:52:47 2024 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568982101; cv=none; d=zoho.com; s=zohoarc; b=CYZVBQ/XJTLh9T3/Tuwqz1hz7iDjxobDxvslJBkZsJ6m7vUsF0bxJIUZsjP3vVtQC/Kcq6kAKeayb2FMbgsZ2Nr07QI3oEITrpKoUNCF9y16bGWeWMPunzsS9goC/d1njSK2OsPlzNx1QzusQNt0JY4SCwKPN0/s17RscEVV2AI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568982101; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=TW9OyTrO/xFhSniv93+zQcUFVKVe3xVsE3WeWxbQMHM=; b=i/bzNSf8aWltIjoTfyFsN7l0PHz26pySeVU64vw4+IZQlU/AvuMidWk8DIm5bX8+KVLtAgrnsoKTdvqXm+eWSyOdhxhGWgM7Gl6wyGlFy8akxbnF5Hf5sW0O6i3RDh+3onKUTuTJdMTJfqZHzu5U7vnZ/Ve3tLQ5FXm7craa6Rc= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1568982101058456.43902009132853; Fri, 20 Sep 2019 05:21:41 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 0A4A8A26679; Fri, 20 Sep 2019 12:21:39 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id D87645D6B0; Fri, 20 Sep 2019 12:21:38 +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 9FCEB4EE6F; Fri, 20 Sep 2019 12:21:38 +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 x8KCLTQD006771 for ; Fri, 20 Sep 2019 08:21:29 -0400 Received: by smtp.corp.redhat.com (Postfix) id 69F07608C2; Fri, 20 Sep 2019 12:21:29 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id E765D6061E for ; Fri, 20 Sep 2019 12:21:28 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 20 Sep 2019 14:21:19 +0200 Message-Id: <8dccd3411550a33bdd3d686811980ca08cfd327c.1568981923.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 6/7] qemu: domain: Move checkpoint related code to qemu_checkpoint.c 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: , 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.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.6.2 (mx1.redhat.com [10.5.110.68]); Fri, 20 Sep 2019 12:21:39 +0000 (UTC) Content-Type: text/plain; charset="utf-8" Signed-off-by: Peter Krempa --- src/qemu/qemu_checkpoint.c | 185 ++++++++++++++++++++++++++++++++++--- src/qemu/qemu_checkpoint.h | 5 + src/qemu/qemu_domain.c | 162 +------------------------------- src/qemu/qemu_domain.h | 15 --- 4 files changed, 180 insertions(+), 187 deletions(-) diff --git a/src/qemu/qemu_checkpoint.c b/src/qemu/qemu_checkpoint.c index 9e9af76871..22f0ffb26e 100644 --- a/src/qemu/qemu_checkpoint.c +++ b/src/qemu/qemu_checkpoint.c @@ -76,6 +76,169 @@ qemuCheckpointObjFromCheckpoint(virDomainObjPtr vm, } +static int +qemuCheckpointWriteMetadata(virDomainObjPtr vm, + virDomainMomentObjPtr checkpoint, + virCapsPtr caps, + virDomainXMLOptionPtr xmlopt, + const char *checkpointDir) +{ + unsigned int flags =3D VIR_DOMAIN_CHECKPOINT_FORMAT_SECURE; + virDomainCheckpointDefPtr def =3D virDomainCheckpointObjGetDef(checkpo= int); + VIR_AUTOFREE(char *) newxml =3D NULL; + VIR_AUTOFREE(char *) chkDir =3D NULL; + VIR_AUTOFREE(char *) chkFile =3D NULL; + + newxml =3D virDomainCheckpointDefFormat(def, caps, xmlopt, flags); + if (newxml =3D=3D NULL) + return -1; + + if (virAsprintf(&chkDir, "%s/%s", checkpointDir, vm->def->name) < 0) + return -1; + if (virFileMakePath(chkDir) < 0) { + virReportSystemError(errno, _("cannot create checkpoint directory = '%s'"), + chkDir); + return -1; + } + + if (virAsprintf(&chkFile, "%s/%s.xml", chkDir, def->parent.name) < 0) + return -1; + + return virXMLSaveFile(chkFile, NULL, "checkpoint-edit", newxml); +} + + +static int +qemuDomainCheckpointDiscard(virQEMUDriverPtr driver, + virDomainObjPtr vm, + virDomainMomentObjPtr chk, + bool update_parent, + bool metadata_only) +{ + virDomainMomentObjPtr parent =3D NULL; + virDomainMomentObjPtr moment; + virDomainCheckpointDefPtr parentdef =3D NULL; + size_t i, j; + VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg =3D virQEMUDriverGetConfig(d= river); + VIR_AUTOFREE(char *) chkFile =3D NULL; + + if (!metadata_only && !virDomainObjIsActive(vm)) { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("cannot remove checkpoint from inactive domain")); + return -1; + } + + if (virAsprintf(&chkFile, "%s/%s/%s.xml", cfg->checkpointDir, + vm->def->name, chk->def->name) < 0) + return -1; + + if (!metadata_only) { + qemuDomainObjPrivatePtr priv =3D vm->privateData; + bool success =3D true; + bool search_parents; + virDomainCheckpointDefPtr chkdef =3D virDomainCheckpointObjGetDef(= chk); + + qemuDomainObjEnterMonitor(driver, vm); + parent =3D virDomainCheckpointFindByName(vm->checkpoints, + chk->def->parent_name); + for (i =3D 0; i < chkdef->ndisks; i++) { + virDomainCheckpointDiskDef *disk =3D &chkdef->disks[i]; + const char *node; + + if (disk->type !=3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP) + continue; + + node =3D qemuDomainDiskNodeFormatLookup(vm, disk->name); + /* If any ancestor checkpoint has a bitmap for the same + * disk, then this bitmap must be merged to the + * ancestor. */ + search_parents =3D true; + for (moment =3D parent; + search_parents && moment; + moment =3D virDomainCheckpointFindByName(vm->checkpoints, + parentdef->parent.= parent_name)) { + parentdef =3D virDomainCheckpointObjGetDef(moment); + for (j =3D 0; j < parentdef->ndisks; j++) { + virDomainCheckpointDiskDef *disk2; + VIR_AUTOPTR(virJSONValue) arr =3D NULL; + + disk2 =3D &parentdef->disks[j]; + if (STRNEQ(disk->name, disk2->name) || + disk2->type !=3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP) + continue; + search_parents =3D false; + + arr =3D virJSONValueNewArray(); + if (!arr || + virJSONValueArrayAppendString(arr, disk->bitmap) <= 0) { + success =3D false; + break; + } + if (chk =3D=3D virDomainCheckpointGetCurrent(vm->check= points) && + qemuMonitorEnableBitmap(priv->mon, node, + disk2->bitmap) < 0) { + success =3D false; + break; + } + if (qemuMonitorMergeBitmaps(priv->mon, node, + disk2->bitmap, &arr) < 0) { + success =3D false; + break; + } + } + } + if (qemuMonitorDeleteBitmap(priv->mon, node, disk->bitmap) < 0= ) { + success =3D false; + break; + } + } + if (qemuDomainObjExitMonitor(driver, vm) < 0 || !success) + return -1; + } + + if (chk =3D=3D virDomainCheckpointGetCurrent(vm->checkpoints)) { + virDomainCheckpointSetCurrent(vm->checkpoints, NULL); + if (update_parent && parent) { + virDomainCheckpointSetCurrent(vm->checkpoints, parent); + if (qemuCheckpointWriteMetadata(vm, parent, driver->caps, + driver->xmlopt, + cfg->checkpointDir) < 0) { + VIR_WARN("failed to set parent checkpoint '%s' as current", + chk->def->parent_name); + virDomainCheckpointSetCurrent(vm->checkpoints, NULL); + } + } + } + + if (unlink(chkFile) < 0) + VIR_WARN("Failed to unlink %s", chkFile); + if (update_parent) + virDomainMomentDropParent(chk); + virDomainCheckpointObjListRemove(vm->checkpoints, chk); + + return 0; +} + + +int +qemuDomainCheckpointDiscardAllMetadata(virQEMUDriverPtr driver, + virDomainObjPtr vm) +{ + virQEMUMomentRemove rem =3D { + .driver =3D driver, + .vm =3D vm, + .metadata_only =3D true, + .momentDiscard =3D qemuDomainCheckpointDiscard, + }; + + virDomainCheckpointForEach(vm->checkpoints, qemuDomainMomentDiscardAll, + &rem); + virDomainCheckpointObjListRemoveAll(vm->checkpoints); + + return rem.err; +} + + /* Called inside job lock */ static int qemuDomainCheckpointPrepare(virQEMUDriverPtr driver, virCapsPtr caps, @@ -267,9 +430,9 @@ qemuCheckpointCreateXML(virDomainPtr domain, goto endjob; if (update_current) { virDomainCheckpointSetCurrent(vm->checkpoints, NULL); - if (qemuDomainCheckpointWriteMetadata(vm, other, - driver->caps, driver->xm= lopt, - cfg->checkpointDir) < 0) + if (qemuCheckpointWriteMetadata(vm, other, + driver->caps, driver->xmlopt, + cfg->checkpointDir) < 0) goto endjob; } } @@ -301,9 +464,9 @@ qemuCheckpointCreateXML(virDomainPtr domain, if (checkpoint) { if (update_current) virDomainCheckpointSetCurrent(vm->checkpoints, chk); - if (qemuDomainCheckpointWriteMetadata(vm, chk, driver->caps, - driver->xmlopt, - cfg->checkpointDir) < 0) { + if (qemuCheckpointWriteMetadata(vm, chk, driver->caps, + driver->xmlopt, + cfg->checkpointDir) < 0) { /* if writing of metadata fails, error out rather than trying * to silently carry on without completing the checkpoint */ virObjectUnref(checkpoint); @@ -384,8 +547,8 @@ qemuCheckpointReparentChildren(void *payload, return 0; } - rep->err =3D qemuDomainCheckpointWriteMetadata(rep->vm, moment, rep->c= aps, - rep->xmlopt, rep->dir); + rep->err =3D qemuCheckpointWriteMetadata(rep->vm, moment, rep->caps, + rep->xmlopt, rep->dir); return 0; } @@ -445,9 +608,9 @@ qemuCheckpointDelete(virDomainObjPtr vm, if (rem.found) { virDomainCheckpointSetCurrent(vm->checkpoints, chk); if (flags & VIR_DOMAIN_CHECKPOINT_DELETE_CHILDREN_ONLY) { - if (qemuDomainCheckpointWriteMetadata(vm, chk, driver->cap= s, - driver->xmlopt, - cfg->checkpointDir) = < 0) { + if (qemuCheckpointWriteMetadata(vm, chk, driver->caps, + driver->xmlopt, + cfg->checkpointDir) < 0) { virReportError(VIR_ERR_INTERNAL_ERROR, _("failed to set checkpoint '%s' as cur= rent"), chk->def->name); diff --git a/src/qemu/qemu_checkpoint.h b/src/qemu/qemu_checkpoint.h index 0d36d718d6..4cea4bcdb4 100644 --- a/src/qemu/qemu_checkpoint.h +++ b/src/qemu/qemu_checkpoint.h @@ -20,6 +20,7 @@ #include "virconftypes.h" #include "datatypes.h" +#include "qemu_conf.h" virDomainObjPtr qemuDomObjFromCheckpoint(virDomainCheckpointPtr checkpoint); @@ -32,6 +33,10 @@ virDomainMomentObjPtr qemuCheckpointObjFromName(virDomainObjPtr vm, const char *name); +int +qemuDomainCheckpointDiscardAllMetadata(virQEMUDriverPtr driver, + virDomainObjPtr vm); + virDomainCheckpointPtr qemuCheckpointCreateXML(virDomainPtr domain, virDomainObjPtr vm, diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index f733198ea9..8e4dc34dec 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -35,6 +35,7 @@ #include "qemu_slirp.h" #include "qemu_extdevice.h" #include "qemu_blockjob.h" +#include "qemu_checkpoint.h" #include "viralloc.h" #include "virlog.h" #include "virerror.h" @@ -9559,36 +9560,6 @@ qemuDomainSnapshotWriteMetadata(virDomainObjPtr vm, return ret; } -int -qemuDomainCheckpointWriteMetadata(virDomainObjPtr vm, - virDomainMomentObjPtr checkpoint, - virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, - const char *checkpointDir) -{ - unsigned int flags =3D VIR_DOMAIN_CHECKPOINT_FORMAT_SECURE; - virDomainCheckpointDefPtr def =3D virDomainCheckpointObjGetDef(checkpo= int); - VIR_AUTOFREE(char *) newxml =3D NULL; - VIR_AUTOFREE(char *) chkDir =3D NULL; - VIR_AUTOFREE(char *) chkFile =3D NULL; - - newxml =3D virDomainCheckpointDefFormat(def, caps, xmlopt, flags); - if (newxml =3D=3D NULL) - return -1; - - if (virAsprintf(&chkDir, "%s/%s", checkpointDir, vm->def->name) < 0) - return -1; - if (virFileMakePath(chkDir) < 0) { - virReportSystemError(errno, _("cannot create checkpoint directory = '%s'"), - chkDir); - return -1; - } - - if (virAsprintf(&chkFile, "%s/%s.xml", chkDir, def->parent.name) < 0) - return -1; - - return virXMLSaveFile(chkFile, NULL, "checkpoint-edit", newxml); -} /* The domain is expected to be locked and inactive. Return -1 on normal * failure, 1 if we skipped a disk due to try_all. */ @@ -9786,137 +9757,6 @@ qemuDomainSnapshotDiscardAllMetadata(virQEMUDriverP= tr driver, } -/* Discard one checkpoint (or its metadata), without reparenting any child= ren. */ -int -qemuDomainCheckpointDiscard(virQEMUDriverPtr driver, - virDomainObjPtr vm, - virDomainMomentObjPtr chk, - bool update_parent, - bool metadata_only) -{ - virDomainMomentObjPtr parent =3D NULL; - virDomainMomentObjPtr moment; - virDomainCheckpointDefPtr parentdef =3D NULL; - size_t i, j; - VIR_AUTOUNREF(virQEMUDriverConfigPtr) cfg =3D virQEMUDriverGetConfig(d= river); - VIR_AUTOFREE(char *) chkFile =3D NULL; - - if (!metadata_only && !virDomainObjIsActive(vm)) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", - _("cannot remove checkpoint from inactive domain")); - return -1; - } - - if (virAsprintf(&chkFile, "%s/%s/%s.xml", cfg->checkpointDir, - vm->def->name, chk->def->name) < 0) - return -1; - - if (!metadata_only) { - qemuDomainObjPrivatePtr priv =3D vm->privateData; - bool success =3D true; - bool search_parents; - virDomainCheckpointDefPtr chkdef =3D virDomainCheckpointObjGetDef(= chk); - - qemuDomainObjEnterMonitor(driver, vm); - parent =3D virDomainCheckpointFindByName(vm->checkpoints, - chk->def->parent_name); - for (i =3D 0; i < chkdef->ndisks; i++) { - virDomainCheckpointDiskDef *disk =3D &chkdef->disks[i]; - const char *node; - - if (disk->type !=3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP) - continue; - - node =3D qemuDomainDiskNodeFormatLookup(vm, disk->name); - /* If any ancestor checkpoint has a bitmap for the same - * disk, then this bitmap must be merged to the - * ancestor. */ - search_parents =3D true; - for (moment =3D parent; - search_parents && moment; - moment =3D virDomainCheckpointFindByName(vm->checkpoints, - parentdef->parent.= parent_name)) { - parentdef =3D virDomainCheckpointObjGetDef(moment); - for (j =3D 0; j < parentdef->ndisks; j++) { - virDomainCheckpointDiskDef *disk2; - VIR_AUTOPTR(virJSONValue) arr =3D NULL; - - disk2 =3D &parentdef->disks[j]; - if (STRNEQ(disk->name, disk2->name) || - disk2->type !=3D VIR_DOMAIN_CHECKPOINT_TYPE_BITMAP) - continue; - search_parents =3D false; - - arr =3D virJSONValueNewArray(); - if (!arr || - virJSONValueArrayAppendString(arr, disk->bitmap) <= 0) { - success =3D false; - break; - } - if (chk =3D=3D virDomainCheckpointGetCurrent(vm->check= points) && - qemuMonitorEnableBitmap(priv->mon, node, - disk2->bitmap) < 0) { - success =3D false; - break; - } - if (qemuMonitorMergeBitmaps(priv->mon, node, - disk2->bitmap, &arr) < 0) { - success =3D false; - break; - } - } - } - if (qemuMonitorDeleteBitmap(priv->mon, node, disk->bitmap) < 0= ) { - success =3D false; - break; - } - } - if (qemuDomainObjExitMonitor(driver, vm) < 0 || !success) - return -1; - } - - if (chk =3D=3D virDomainCheckpointGetCurrent(vm->checkpoints)) { - virDomainCheckpointSetCurrent(vm->checkpoints, NULL); - if (update_parent && parent) { - virDomainCheckpointSetCurrent(vm->checkpoints, parent); - if (qemuDomainCheckpointWriteMetadata(vm, parent, driver->caps, - driver->xmlopt, - cfg->checkpointDir) < 0)= { - VIR_WARN("failed to set parent checkpoint '%s' as current", - chk->def->parent_name); - virDomainCheckpointSetCurrent(vm->checkpoints, NULL); - } - } - } - - if (unlink(chkFile) < 0) - VIR_WARN("Failed to unlink %s", chkFile); - if (update_parent) - virDomainMomentDropParent(chk); - virDomainCheckpointObjListRemove(vm->checkpoints, chk); - - return 0; -} - -int -qemuDomainCheckpointDiscardAllMetadata(virQEMUDriverPtr driver, - virDomainObjPtr vm) -{ - virQEMUMomentRemove rem =3D { - .driver =3D driver, - .vm =3D vm, - .metadata_only =3D true, - .momentDiscard =3D qemuDomainCheckpointDiscard, - }; - - virDomainCheckpointForEach(vm->checkpoints, qemuDomainMomentDiscardAll, - &rem); - virDomainCheckpointObjListRemoveAll(vm->checkpoints); - - return rem.err; -} - - static void qemuDomainRemoveInactiveCommon(virQEMUDriverPtr driver, virDomainObjPtr vm) diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 63d780e79b..22335f5114 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -780,21 +780,6 @@ int qemuDomainMomentDiscardAll(void *payload, int qemuDomainSnapshotDiscardAllMetadata(virQEMUDriverPtr driver, virDomainObjPtr vm); -int qemuDomainCheckpointWriteMetadata(virDomainObjPtr vm, - virDomainMomentObjPtr checkpoint, - virCapsPtr caps, - virDomainXMLOptionPtr xmlopt, - const char *checkpointDir); - -int qemuDomainCheckpointDiscard(virQEMUDriverPtr driver, - virDomainObjPtr vm, - virDomainMomentObjPtr chk, - bool update_current, - bool metadata_only); - -int qemuDomainCheckpointDiscardAllMetadata(virQEMUDriverPtr driver, - virDomainObjPtr vm); - void qemuDomainRemoveInactive(virQEMUDriverPtr driver, virDomainObjPtr vm); --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list From nobody Fri May 3 11:52:47 2024 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; dmarc=pass(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1568982108; cv=none; d=zoho.com; s=zohoarc; b=cNS/n422PTomEDMc0OvuUhi5sAdLc3c64cYizH7yc/WJkOpnf9Lr4IVG62r+W5pV+sIehN7InLtul2MPQOuZCdDFNGu0mWz7TrP/z27UeSn0Hqotjfg3EglO/HTi7hfJMFne62OGI9o9fZ2O30FDzcpmBdG1Os+TDreczJWgrhQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1568982108; h=Content-Type:Content-Transfer-Encoding:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To:ARC-Authentication-Results; bh=2QfojpQ5HD00t+ENg9Ub9IHG2Rn2NpOhkzcnX+NyBvE=; b=FIDyG/z8bpkU7K4c4GfJ6cjJnzsU9Il5whSyehqzwbq0ZN0h7UIZ1h1xkt+5SerX/w4jCo+QbKx6U1Ni1YpI18OGkj8aPUBN5cIp008WsjUG7uUZQ5vg9RVn6onzTmA5izF8ZvQEt3fy2AELYBOT/tsZrUfwWmdqYcGbQAePYzQ= ARC-Authentication-Results: i=1; mx.zoho.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) header.from= Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 15689821086592.894494583161304; Fri, 20 Sep 2019 05:21:48 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id D5F013082199; Fri, 20 Sep 2019 12:21:46 +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 AA55F60C5E; Fri, 20 Sep 2019 12:21:46 +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 645A1180B761; Fri, 20 Sep 2019 12:21:46 +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 x8KCLUcd006776 for ; Fri, 20 Sep 2019 08:21:30 -0400 Received: by smtp.corp.redhat.com (Postfix) id 39F9F60606; Fri, 20 Sep 2019 12:21:30 +0000 (UTC) Received: from angien.brq.redhat.com (unknown [10.43.2.229]) by smtp.corp.redhat.com (Postfix) with ESMTP id B7956608C2 for ; Fri, 20 Sep 2019 12:21:29 +0000 (UTC) From: Peter Krempa To: libvir-list@redhat.com Date: Fri, 20 Sep 2019 14:21:20 +0200 Message-Id: <19f8b79fc8fe259fdc5b605d642474d6ec051c82.1568981923.git.pkrempa@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 7/7] qemu: driver: Don't pull in qemu_monitor_json.h directly 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: , 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.12 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.42]); Fri, 20 Sep 2019 12:21:47 +0000 (UTC) Content-Type: text/plain; charset="utf-8" There's nothing that uses it directly now. Also not allowing direct use will promote our layering. Signed-off-by: Peter Krempa --- src/qemu/qemu_driver.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 89a0b0963d..186b6ed528 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -47,7 +47,6 @@ #include "qemu_hostdev.h" #include "qemu_hotplug.h" #include "qemu_monitor.h" -#include "qemu_monitor_json.h" #include "qemu_process.h" #include "qemu_migration.h" #include "qemu_migration_params.h" --=20 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list