From nobody Fri May 16 08:32:28 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.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; Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1496769740203195.53700717724598; Tue, 6 Jun 2017 10:22:20 -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 C54738A003; Tue, 6 Jun 2017 17:22:17 +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 5DC707E570; Tue, 6 Jun 2017 17:22:17 +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 101604A490; Tue, 6 Jun 2017 17:22:17 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id v559RClg002073 for ; Mon, 5 Jun 2017 05:27:12 -0400 Received: by smtp.corp.redhat.com (Postfix) id EC29E785B8; Mon, 5 Jun 2017 09:27:12 +0000 (UTC) Received: from virval.usersys.redhat.com (dhcp129-92.brq.redhat.com [10.34.129.92]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 70B34869FC for ; Mon, 5 Jun 2017 09:27:09 +0000 (UTC) Received: by virval.usersys.redhat.com (Postfix, from userid 500) id ABB2010CCFD; Mon, 5 Jun 2017 11:27:04 +0200 (CEST) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com C54738A003 Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx02.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=libvir-list-bounces@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com C54738A003 From: Jiri Denemark To: libvir-list@redhat.com Date: Mon, 5 Jun 2017 11:26:56 +0200 Message-Id: <25516b40e08065a230bd8abbad7927bf334ccec4.1496654484.git.jdenemar@redhat.com> In-Reply-To: References: In-Reply-To: References: Mail-Followup-To: libvir-list@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-loop: libvir-list@redhat.com Subject: [libvirt] [PATCH 08/15] conf: Add save cookie callbacks to xmlopt X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.26]); Tue, 06 Jun 2017 17:22:18 +0000 (UTC) X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" virDomainXMLOption gains driver specific callbacks for parsing and formatting save cookies. Signed-off-by: Jiri Denemark --- src/bhyve/bhyve_domain.c | 2 +- src/conf/domain_conf.c | 16 +++++++++++++++- src/conf/domain_conf.h | 7 ++++++- src/conf/snapshot_conf.c | 11 ++++++++++- src/conf/snapshot_conf.h | 2 ++ src/libvirt_private.syms | 1 + src/libxl/libxl_conf.c | 2 +- src/lxc/lxc_conf.c | 2 +- src/openvz/openvz_driver.c | 2 +- src/phyp/phyp_driver.c | 2 +- src/qemu/qemu_capabilities.c | 2 +- src/qemu/qemu_conf.c | 3 ++- src/security/virt-aa-helper.c | 2 +- src/test/test_driver.c | 2 +- src/uml/uml_driver.c | 2 +- src/vbox/vbox_common.c | 2 +- src/vmware/vmware_driver.c | 3 ++- src/vmx/vmx.c | 2 +- src/vz/vz_driver.c | 2 +- src/xen/xen_driver.c | 2 +- src/xenapi/xenapi_driver.c | 2 +- tests/bhyveargv2xmltest.c | 2 +- tests/testutils.c | 2 +- 23 files changed, 54 insertions(+), 21 deletions(-) diff --git a/src/bhyve/bhyve_domain.c b/src/bhyve/bhyve_domain.c index 0a99550af..20c82937b 100644 --- a/src/bhyve/bhyve_domain.c +++ b/src/bhyve/bhyve_domain.c @@ -144,7 +144,7 @@ virBhyveDriverCreateXMLConf(bhyveConnPtr driver) virBhyveDriverDomainDefParserConfig.priv =3D driver; return virDomainXMLOptionNew(&virBhyveDriverDomainDefParserConfig, &virBhyveDriverPrivateDataCallbacks, - NULL, NULL); + NULL, NULL, NULL); } =20 virDomainDefParserConfig virBhyveDriverDomainDefParserConfig =3D { diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 7144914cf..d3bc3655e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -79,6 +79,9 @@ struct _virDomainXMLOption { =20 /* ABI stability callbacks */ virDomainABIStability abi; + + /* Private data for save image stored in snapshot XML */ + virSaveCookieCallbacks saveCookie; }; =20 #define VIR_DOMAIN_DEF_FORMAT_COMMON_FLAGS \ @@ -1054,7 +1057,8 @@ virDomainXMLOptionPtr virDomainXMLOptionNew(virDomainDefParserConfigPtr config, virDomainXMLPrivateDataCallbacksPtr priv, virDomainXMLNamespacePtr xmlns, - virDomainABIStabilityPtr abi) + virDomainABIStabilityPtr abi, + virSaveCookieCallbacksPtr saveCookie) { virDomainXMLOptionPtr xmlopt; =20 @@ -1076,6 +1080,9 @@ virDomainXMLOptionNew(virDomainDefParserConfigPtr con= fig, if (abi) xmlopt->abi =3D *abi; =20 + if (saveCookie) + xmlopt->saveCookie =3D *saveCookie; + /* Technically this forbids to use one of Xerox's MAC address prefixes= in * our hypervisor drivers. This shouldn't ever be a problem. * @@ -1106,6 +1113,13 @@ virDomainXMLOptionGetNamespace(virDomainXMLOptionPtr= xmlopt) } =20 =20 +virSaveCookieCallbacksPtr +virDomainXMLOptionGetSaveCookie(virDomainXMLOptionPtr xmlopt) +{ + return &xmlopt->saveCookie; +} + + void virBlkioDeviceArrayClear(virBlkioDevicePtr devices, int ndevices) diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 446b117b7..1231aeac6 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -55,6 +55,7 @@ # include "virgic.h" # include "virperf.h" # include "virtypedparam.h" +# include "virsavecookie.h" =20 /* forward declarations of all device types, required by * virDomainDeviceDef @@ -2549,7 +2550,11 @@ struct _virDomainABIStability { virDomainXMLOptionPtr virDomainXMLOptionNew(virDomainDefParserConfigPtr co= nfig, virDomainXMLPrivateDataCallbac= ksPtr priv, virDomainXMLNamespacePtr xmlns, - virDomainABIStabilityPtr abi); + virDomainABIStabilityPtr abi, + virSaveCookieCallbacksPtr save= Cookie); + +virSaveCookieCallbacksPtr +virDomainXMLOptionGetSaveCookie(virDomainXMLOptionPtr xmlopt); =20 void virDomainNetGenerateMAC(virDomainXMLOptionPtr xmlopt, virMacAddrPtr m= ac); =20 diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c index e3bba985d..6330f7d1f 100644 --- a/src/conf/snapshot_conf.c +++ b/src/conf/snapshot_conf.c @@ -102,6 +102,7 @@ void virDomainSnapshotDefFree(virDomainSnapshotDefPtr d= ef) virDomainSnapshotDiskDefClear(&def->disks[i]); VIR_FREE(def->disks); virDomainDefFree(def->dom); + virObjectUnref(def->cookie); VIR_FREE(def); } =20 @@ -214,6 +215,7 @@ virDomainSnapshotDefParse(xmlXPathContextPtr ctxt, char *memorySnapshot =3D NULL; char *memoryFile =3D NULL; bool offline =3D !!(flags & VIR_DOMAIN_SNAPSHOT_PARSE_OFFLINE); + virSaveCookieCallbacksPtr saveCookie =3D virDomainXMLOptionGetSaveCook= ie(xmlopt); =20 if (VIR_ALLOC(def) < 0) goto cleanup; @@ -365,6 +367,9 @@ virDomainSnapshotDefParse(xmlXPathContextPtr ctxt, def->current =3D active !=3D 0; } =20 + if (!offline && virSaveCookieParse(ctxt, &def->cookie, saveCookie) < 0) + goto cleanup; + ret =3D def; =20 cleanup: @@ -691,7 +696,7 @@ char * virDomainSnapshotDefFormat(const char *domain_uuid, virDomainSnapshotDefPtr def, virCapsPtr caps, - virDomainXMLOptionPtr xmlopt ATTRIBUTE_UNUSED, + virDomainXMLOptionPtr xmlopt, unsigned int flags, int internal) { @@ -751,6 +756,10 @@ virDomainSnapshotDefFormat(const char *domain_uuid, virBufferAddLit(&buf, "\n"); } =20 + if (virSaveCookieFormatBuf(&buf, def->cookie, + virDomainXMLOptionGetSaveCookie(xmlopt)) < = 0) + goto error; + if (internal) virBufferAsprintf(&buf, "%d\n", def->current); =20 diff --git a/src/conf/snapshot_conf.h b/src/conf/snapshot_conf.h index 2ce526fa6..1d663c77b 100644 --- a/src/conf/snapshot_conf.h +++ b/src/conf/snapshot_conf.h @@ -76,6 +76,8 @@ struct _virDomainSnapshotDef { =20 virDomainDefPtr dom; =20 + virObjectPtr cookie; + /* Internal use. */ bool current; /* At most one snapshot in the list should have this set= */ }; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 863c71cf3..fad31b475 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -535,6 +535,7 @@ virDomainWatchdogActionTypeToString; virDomainWatchdogModelTypeFromString; virDomainWatchdogModelTypeToString; virDomainXMLOptionGetNamespace; +virDomainXMLOptionGetSaveCookie; virDomainXMLOptionNew; =20 =20 diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 886dc629f..04d9dd1bd 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -2255,5 +2255,5 @@ libxlCreateXMLConf(void) { return virDomainXMLOptionNew(&libxlDomainDefParserConfig, &libxlDomainXMLPrivateDataCallbacks, - NULL, NULL); + NULL, NULL, NULL); } diff --git a/src/lxc/lxc_conf.c b/src/lxc/lxc_conf.c index ff975decc..92a82a476 100644 --- a/src/lxc/lxc_conf.c +++ b/src/lxc/lxc_conf.c @@ -216,7 +216,7 @@ lxcDomainXMLConfInit(void) return virDomainXMLOptionNew(&virLXCDriverDomainDefParserConfig, &virLXCDriverPrivateDataCallbacks, &virLXCDriverDomainXMLNamespace, - NULL); + NULL, NULL); } =20 =20 diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index 8e305a85c..a1485fc88 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -1483,7 +1483,7 @@ static virDrvOpenStatus openvzConnectOpen(virConnectP= tr conn, goto cleanup; =20 if (!(driver->xmlopt =3D virDomainXMLOptionNew(&openvzDomainDefParserC= onfig, - NULL, NULL, NULL))) + NULL, NULL, NULL, NULL))) goto cleanup; =20 if (openvzLoadDomains(driver) < 0) diff --git a/src/phyp/phyp_driver.c b/src/phyp/phyp_driver.c index 4465ac862..9121581fe 100644 --- a/src/phyp/phyp_driver.c +++ b/src/phyp/phyp_driver.c @@ -1202,7 +1202,7 @@ phypConnectOpen(virConnectPtr conn, goto failure; =20 if (!(phyp_driver->xmlopt =3D virDomainXMLOptionNew(&virPhypDriverDoma= inDefParserConfig, - NULL, NULL, NULL))) + NULL, NULL, NULL, NU= LL))) goto failure; =20 conn->privateData =3D phyp_driver; diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 03c55853f..7f2249259 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -5026,7 +5026,7 @@ virQEMUCapsInitQMPCommandRun(virQEMUCapsInitQMPComman= dPtr cmd, goto ignore; } =20 - if (!(xmlopt =3D virDomainXMLOptionNew(NULL, NULL, NULL, NULL)) || + if (!(xmlopt =3D virDomainXMLOptionNew(NULL, NULL, NULL, NULL, NULL)) = || !(cmd->vm =3D virDomainObjNew(xmlopt))) goto cleanup; =20 diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index d8b88386d..d02e776b0 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -910,7 +910,8 @@ virQEMUDriverCreateXMLConf(virQEMUDriverPtr driver) return virDomainXMLOptionNew(&virQEMUDriverDomainDefParserConfig, &virQEMUDriverPrivateDataCallbacks, &virQEMUDriverDomainXMLNamespace, - &virQEMUDriverDomainABIStability); + &virQEMUDriverDomainABIStability, + NULL); } =20 =20 diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 48201d5b8..97436e5dc 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -667,7 +667,7 @@ get_definition(vahControl * ctl, const char *xmlStr) goto exit; } =20 - if (!(ctl->xmlopt =3D virDomainXMLOptionNew(NULL, NULL, NULL, NULL))) { + if (!(ctl->xmlopt =3D virDomainXMLOptionNew(NULL, NULL, NULL, NULL, NU= LL))) { vah_error(ctl, 0, _("Failed to create XML config object")); goto exit; } diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 521c12c11..2cfaf70b2 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -414,7 +414,7 @@ testDriverNew(void) goto error; } =20 - if (!(ret->xmlopt =3D virDomainXMLOptionNew(NULL, NULL, &ns, NULL)) || + if (!(ret->xmlopt =3D virDomainXMLOptionNew(NULL, NULL, &ns, NULL, NUL= L)) || !(ret->eventState =3D virObjectEventStateNew()) || !(ret->ifaces =3D virInterfaceObjListNew()) || !(ret->domains =3D virDomainObjListNew()) || diff --git a/src/uml/uml_driver.c b/src/uml/uml_driver.c index 58ab033c8..080fea47d 100644 --- a/src/uml/uml_driver.c +++ b/src/uml/uml_driver.c @@ -533,7 +533,7 @@ umlStateInitialize(bool privileged, goto out_of_memory; =20 if (!(uml_driver->xmlopt =3D virDomainXMLOptionNew(¨DriverDomainDef= ParserConfig, - &privcb, NULL, NULL))) + &privcb, NULL, NULL, = NULL))) goto error; =20 if ((uml_driver->inotifyFD =3D inotify_init()) < 0) { diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index 1a90d00aa..c46e71bcf 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -142,7 +142,7 @@ vboxDriverObjNew(void) =20 if (!(driver->caps =3D vboxCapsInit()) || !(driver->xmlopt =3D virDomainXMLOptionNew(&vboxDomainDefParserCon= fig, - NULL, NULL, NULL))) + NULL, NULL, NULL, NULL))) goto cleanup; =20 return driver; diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c index 9e369e67b..0ee1c5bb9 100644 --- a/src/vmware/vmware_driver.c +++ b/src/vmware/vmware_driver.c @@ -114,7 +114,8 @@ vmwareDomainXMLConfigInit(void) virDomainXMLPrivateDataCallbacks priv =3D { .alloc =3D vmwareDataAlloc= Func, .free =3D vmwareDataFreeFunc= }; =20 - return virDomainXMLOptionNew(&vmwareDomainDefParserConfig, &priv, NULL= , NULL); + return virDomainXMLOptionNew(&vmwareDomainDefParserConfig, &priv, + NULL, NULL, NULL); } =20 static virDrvOpenStatus diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 3289a2002..96507f10f 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -591,7 +591,7 @@ virDomainXMLOptionPtr virVMXDomainXMLConfInit(void) { return virDomainXMLOptionNew(&virVMXDomainDefParserConfig, NULL, - &virVMXDomainXMLNamespace, NULL); + &virVMXDomainXMLNamespace, NULL, NULL); } =20 char * diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index e6bb20182..7aa0c4c48 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -328,7 +328,7 @@ vzDriverObjNew(void) if (!(driver->caps =3D vzBuildCapabilities()) || !(driver->xmlopt =3D virDomainXMLOptionNew(&vzDomainDefParserConfi= g, &vzDomainXMLPrivateDataCa= llbacksPtr, - NULL, NULL)) || + NULL, NULL, NULL)) || !(driver->domains =3D virDomainObjListNew()) || !(driver->domainEventState =3D virObjectEventStateNew()) || (vzInitVersion(driver) < 0) || diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c index f81ee20ad..8e7bc350c 100644 --- a/src/xen/xen_driver.c +++ b/src/xen/xen_driver.c @@ -401,7 +401,7 @@ virDomainXMLOptionPtr xenDomainXMLConfInit(void) { return virDomainXMLOptionNew(&xenDomainDefParserConfig, - NULL, NULL, NULL); + NULL, NULL, NULL, NULL); } =20 =20 diff --git a/src/xenapi/xenapi_driver.c b/src/xenapi/xenapi_driver.c index 380c3a1de..fb462cd3a 100644 --- a/src/xenapi/xenapi_driver.c +++ b/src/xenapi/xenapi_driver.c @@ -200,7 +200,7 @@ xenapiConnectOpen(virConnectPtr conn, virConnectAuthPtr= auth, } =20 if (!(privP->xmlopt =3D virDomainXMLOptionNew(&xenapiDomainDefParserCo= nfig, - NULL, NULL, NULL))) { + NULL, NULL, NULL, NULL))) { xenapiSessionErrorHandler(conn, VIR_ERR_INTERNAL_ERROR, _("Failed to create XML conf object")); goto error; diff --git a/tests/bhyveargv2xmltest.c b/tests/bhyveargv2xmltest.c index bde7d0e05..e1c0294cb 100644 --- a/tests/bhyveargv2xmltest.c +++ b/tests/bhyveargv2xmltest.c @@ -131,7 +131,7 @@ mymain(void) return EXIT_FAILURE; =20 if ((driver.xmlopt =3D virDomainXMLOptionNew(NULL, NULL, - NULL, NULL)) =3D=3D NULL) + NULL, NULL, NULL)) =3D=3D N= ULL) return EXIT_FAILURE; =20 # define DO_TEST_FULL(name, flags) \ diff --git a/tests/testutils.c b/tests/testutils.c index 4b8cf79ef..f45596997 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -1136,7 +1136,7 @@ virDomainXMLOptionPtr virTestGenericDomainXMLConfInit= (void) { return virDomainXMLOptionNew(&virTestGenericDomainDefParserConfig, &virTestGenericPrivateDataCallbacks, - NULL, NULL); + NULL, NULL, NULL); } =20 =20 --=20 2.13.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list