From nobody Mon Feb 9 03:46:26 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) client-ip=170.10.133.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 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=1661352829; cv=none; d=zohomail.com; s=zohoarc; b=NjqSpkf3m8bf7ebDfetss80x1+gzXEzSsPxkaYx9V13GuU7QTMYPfXS+49+YLbGKVnXiFw8ITTgfqQHtySPLn40zTFdRrWqXXo8ZQQVufayVYwB4jjGqWUKwRUWltehWquNNNanmmuXsS42ACdnFFBRa2rR9wNdHg69yMDMltOg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1661352829; 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; bh=ocyC+/if8u2UuBoz2/ogBod12gtioG2pgGGsuy6ykuw=; b=O4Yi05Zzj80fEK1DPu/ymUDF8rHOzzZraqZ13UT9VL9L9zk3D8xxNkDdwEmgOD1jaLp0RCTFk9EUlw2yyYIUL9GcuQPIYmYrcNJtUQx/epKEzAsoSIhPfhXQLV6FCgHX9GgkCOpZMxrcRxhInnntoOvcp05HI2yFf0qKKC1CzRM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by mx.zohomail.com with SMTPS id 1661352829283158.24836861167273; Wed, 24 Aug 2022 07:53:49 -0700 (PDT) Received: from mimecast-mx02.redhat.com (mx3-rdu2.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-272-n-rzXETUOOidXdZt6l11nA-1; Wed, 24 Aug 2022 10:53:42 -0400 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id E10083815D2E; Wed, 24 Aug 2022 14:53:40 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (unknown [10.30.29.100]) by smtp.corp.redhat.com (Postfix) with ESMTP id C97E118ECC; Wed, 24 Aug 2022 14:53:40 +0000 (UTC) Received: from mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (localhost [IPv6:::1]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 90D941946A43; Wed, 24 Aug 2022 14:53:40 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by mm-prod-listman-01.mail-001.prod.us-east-1.aws.redhat.com (Postfix) with ESMTP id 303F81946A42 for ; Wed, 24 Aug 2022 13:43:49 +0000 (UTC) Received: by smtp.corp.redhat.com (Postfix) id 055F09459C; Wed, 24 Aug 2022 13:43:49 +0000 (UTC) Received: from fedora.redhat.com (unknown [10.43.2.166]) by smtp.corp.redhat.com (Postfix) with ESMTP id 8AFD318ECC for ; Wed, 24 Aug 2022 13:43:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1661352828; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=ocyC+/if8u2UuBoz2/ogBod12gtioG2pgGGsuy6ykuw=; b=IOz2lUpP31uYdXSEyUX3Jd8QvMzdTo67vrJKafnPKj7mxIbuT52oUH1aIqaJfo29Z6jo2C GqynUBGqbUGVgursMd7KeSVi0twMbOZMnFOH2jd1lJpw/DcNY8PzUoCYARp1sNeoPwYtQ4 bdWcE6tQZCTsFPdX6VydW2SJt1Syu+A= X-MC-Unique: n-rzXETUOOidXdZt6l11nA-1 X-Original-To: libvir-list@listman.corp.redhat.com From: Kristina Hanicova To: libvir-list@redhat.com Subject: [PATCH 05/17] conf: extend xmlopt with job config & add job object into domain object Date: Wed, 24 Aug 2022 15:43:28 +0200 Message-Id: In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libvir-list-bounces@redhat.com Sender: "libvir-list" X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @redhat.com) X-ZM-MESSAGEID: 1661352831855100005 Content-Type: text/plain; charset="utf-8"; x-default="true" This patch adds the generalized job object into the domain object so that it can be used by all drivers without the need to extract it from the private data. Because of this, the job object needs to be created and set during the creation of the domain object. This patch also extends xmlopt with possible job config containing virDomainJobObj callbacks, its private data callbacks and one variable (maxQueuedJobs). This patch includes: * addition of virDomainJobObj into virDomainObj (used in the following patches) * extending xmlopt with job config structure * new function for freeing the virDomainJobObj Signed-off-by: Kristina Hanicova Reviewed-by: J=C3=A1n Tomko --- src/bhyve/bhyve_domain.c | 2 +- src/ch/ch_conf.c | 2 +- src/conf/domain_conf.c | 13 ++++++++++++- src/conf/domain_conf.h | 16 +++++++++++++++- src/conf/virconftypes.h | 2 ++ src/conf/virdomainjob.c | 11 +++++++++++ src/conf/virdomainjob.h | 5 ++++- src/hyperv/hyperv_driver.c | 2 +- src/libvirt_private.syms | 1 + src/libxl/libxl_conf.c | 2 +- src/lxc/lxc_conf.c | 2 +- src/openvz/openvz_conf.c | 2 +- src/qemu/qemu_conf.c | 3 ++- src/qemu/qemu_process.c | 2 +- src/security/virt-aa-helper.c | 2 +- src/test/test_driver.c | 2 +- src/vbox/vbox_common.c | 2 +- src/vmware/vmware_driver.c | 2 +- src/vmx/vmx.c | 2 +- src/vz/vz_driver.c | 2 +- tests/bhyveargv2xmltest.c | 2 +- tests/testutils.c | 2 +- 22 files changed, 62 insertions(+), 19 deletions(-) diff --git a/src/bhyve/bhyve_domain.c b/src/bhyve/bhyve_domain.c index 69555a3efc..b7b2db57b8 100644 --- a/src/bhyve/bhyve_domain.c +++ b/src/bhyve/bhyve_domain.c @@ -221,7 +221,7 @@ virBhyveDriverCreateXMLConf(struct _bhyveConn *driver) return virDomainXMLOptionNew(&virBhyveDriverDomainDefParserConfig, &virBhyveDriverPrivateDataCallbacks, &virBhyveDriverDomainXMLNamespace, - NULL, NULL); + NULL, NULL, NULL); } =20 =20 diff --git a/src/ch/ch_conf.c b/src/ch/ch_conf.c index 775596e9f5..0d07fa270c 100644 --- a/src/ch/ch_conf.c +++ b/src/ch/ch_conf.c @@ -110,7 +110,7 @@ chDomainXMLConfInit(virCHDriver *driver) virCHDriverDomainDefParserConfig.priv =3D driver; return virDomainXMLOptionNew(&virCHDriverDomainDefParserConfig, &virCHDriverPrivateDataCallbacks, - NULL, NULL, NULL); + NULL, NULL, NULL, NULL); } =20 virCHDriverConfig * diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 2fc94b40ef..221e89eb7e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1604,7 +1604,8 @@ virDomainXMLOptionNew(virDomainDefParserConfig *confi= g, virDomainXMLPrivateDataCallbacks *priv, virXMLNamespace *xmlns, virDomainABIStability *abi, - virSaveCookieCallbacks *saveCookie) + virSaveCookieCallbacks *saveCookie, + virDomainJobObjConfig *jobConfig) { virDomainXMLOption *xmlopt; =20 @@ -1629,6 +1630,9 @@ virDomainXMLOptionNew(virDomainDefParserConfig *confi= g, if (saveCookie) xmlopt->saveCookie =3D *saveCookie; =20 + if (jobConfig) + xmlopt->jobObjConfig =3D *jobConfig; + /* Technically this forbids to use one of Xerox's MAC address prefixes= in * our hypervisor drivers. This shouldn't ever be a problem. * @@ -3857,6 +3861,7 @@ static void virDomainObjDispose(void *obj) virDomainObjDeprecationFree(dom); virDomainSnapshotObjListFree(dom->snapshots); virDomainCheckpointObjListFree(dom->checkpoints); + virDomainJobObjFree(dom->job); } =20 virDomainObj * @@ -3889,6 +3894,12 @@ virDomainObjNew(virDomainXMLOption *xmlopt) if (!(domain->checkpoints =3D virDomainCheckpointObjListNew())) goto error; =20 + domain->job =3D g_new0(virDomainJobObj, 1); + if (virDomainObjInitJob(domain->job, + &xmlopt->jobObjConfig.cb, + &xmlopt->jobObjConfig.jobDataPrivateCb) < 0) + goto error; + virObjectLock(domain); virDomainObjSetState(domain, VIR_DOMAIN_SHUTOFF, VIR_DOMAIN_SHUTOFF_UNKNOWN); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index a1f6cf7a6f..67405f2fcd 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -56,6 +56,7 @@ #include "virsavecookie.h" #include "virresctrl.h" #include "virenum.h" +#include "virdomainjob.h" =20 /* Flags for the 'type' field in virDomainDeviceDef */ typedef enum { @@ -3093,6 +3094,8 @@ struct _virDomainObj { virObjectLockable parent; virCond cond; =20 + virDomainJobObj *job; + pid_t pid; /* 0 for no PID, avoid negative values like -1 */ virDomainStateReason state; =20 @@ -3277,11 +3280,19 @@ struct _virDomainABIStability { virDomainABIStabilityDomain domain; }; =20 + +struct _virDomainJobObjConfig { + virDomainObjPrivateJobCallbacks cb; + virDomainJobDataPrivateDataCallbacks jobDataPrivateCb; + unsigned int maxQueuedJobs; +}; + virDomainXMLOption *virDomainXMLOptionNew(virDomainDefParserConfig *config, virDomainXMLPrivateDataCallbacks= *priv, virXMLNamespace *xmlns, virDomainABIStability *abi, - virSaveCookieCallbacks *saveCook= ie); + virSaveCookieCallbacks *saveCook= ie, + virDomainJobObjConfig *jobConfig= ); =20 virSaveCookieCallbacks * virDomainXMLOptionGetSaveCookie(virDomainXMLOption *xmlopt); @@ -3321,6 +3332,9 @@ struct _virDomainXMLOption { =20 /* Snapshot postparse callbacks */ virDomainMomentPostParseCallback momentPostParse; + + /* virDomainJobObj callbacks, private data callbacks and defaults */ + virDomainJobObjConfig jobObjConfig; }; G_DEFINE_AUTOPTR_CLEANUP_FUNC(virDomainXMLOption, virObjectUnref); =20 diff --git a/src/conf/virconftypes.h b/src/conf/virconftypes.h index c3f1c5fa01..154805091a 100644 --- a/src/conf/virconftypes.h +++ b/src/conf/virconftypes.h @@ -150,6 +150,8 @@ typedef struct _virDomainIdMapEntry virDomainIdMapEntry; =20 typedef struct _virDomainInputDef virDomainInputDef; =20 +typedef struct _virDomainJobObjConfig virDomainJobObjConfig; + typedef struct _virDomainKeyWrapDef virDomainKeyWrapDef; =20 typedef struct _virDomainLeaseDef virDomainLeaseDef; diff --git a/src/conf/virdomainjob.c b/src/conf/virdomainjob.c index 0e246cbb93..53861cb153 100644 --- a/src/conf/virdomainjob.c +++ b/src/conf/virdomainjob.c @@ -13,6 +13,7 @@ #include "virthreadjob.h" #include "virlog.h" #include "virtime.h" +#include "domain_conf.h" =20 #define VIR_FROM_THIS VIR_FROM_HYPERV =20 @@ -230,6 +231,16 @@ virDomainObjClearJob(virDomainJobObj *job) g_clear_pointer(&job->privateData, job->cb->freeJobPrivate); } =20 +void +virDomainJobObjFree(virDomainJobObj *job) +{ + if (!job) + return; + + virDomainObjClearJob(job); + g_free(job); +} + bool virDomainTrackJob(virDomainJob job) { diff --git a/src/conf/virdomainjob.h b/src/conf/virdomainjob.h index bdfdc91935..091d951aa6 100644 --- a/src/conf/virdomainjob.h +++ b/src/conf/virdomainjob.h @@ -11,7 +11,8 @@ #include "virenum.h" #include "virthread.h" #include "virbuffer.h" -#include "domain_conf.h" +#include "virconftypes.h" +#include "virxml.h" =20 #define JOB_MASK(job) (job =3D=3D 0 ? 0 : 1 << (job - 1)) #define VIR_JOB_DEFAULT_MASK \ @@ -227,6 +228,8 @@ int virDomainObjPreserveJob(virDomainJobObj *currJob, void virDomainObjClearJob(virDomainJobObj *job); G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(virDomainJobObj, virDomainObjClearJob); =20 +void virDomainJobObjFree(virDomainJobObj *job); + bool virDomainTrackJob(virDomainJob job); =20 bool virDomainNestedJobAllowed(virDomainJobObj *jobs, virDomainJob newJob); diff --git a/src/hyperv/hyperv_driver.c b/src/hyperv/hyperv_driver.c index 288c01ad14..3929e27e09 100644 --- a/src/hyperv/hyperv_driver.c +++ b/src/hyperv/hyperv_driver.c @@ -1766,7 +1766,7 @@ hypervConnectOpen(virConnectPtr conn, virConnectAuthP= tr auth, goto cleanup; =20 /* init xmlopt for domain XML */ - priv->xmlopt =3D virDomainXMLOptionNew(&hypervDomainDefParserConfig, N= ULL, NULL, NULL, NULL); + priv->xmlopt =3D virDomainXMLOptionNew(&hypervDomainDefParserConfig, N= ULL, NULL, NULL, NULL, NULL); =20 if (hypervGetOperatingSystem(priv, &os) < 0) goto cleanup; diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index f406fa39ae..71ed240cbf 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1182,6 +1182,7 @@ virDomainAsyncJobTypeToString; virDomainJobDataCopy; virDomainJobDataFree; virDomainJobDataInit; +virDomainJobObjFree; virDomainJobStatusToType; virDomainJobTypeFromString; virDomainJobTypeToString; diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 6d7a6c5853..ab2dab358c 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -2486,5 +2486,5 @@ libxlCreateXMLConf(libxlDriverPrivate *driver) return virDomainXMLOptionNew(&libxlDomainDefParserConfig, &libxlDomainXMLPrivateDataCallbacks, &libxlDriverDomainXMLNamespace, - NULL, NULL); + NULL, NULL, NULL); } diff --git a/src/lxc/lxc_conf.c b/src/lxc/lxc_conf.c index 7834801fb5..fefe63bf20 100644 --- a/src/lxc/lxc_conf.c +++ b/src/lxc/lxc_conf.c @@ -189,7 +189,7 @@ lxcDomainXMLConfInit(virLXCDriver *driver, const char *= defsecmodel) return virDomainXMLOptionNew(&virLXCDriverDomainDefParserConfig, &virLXCDriverPrivateDataCallbacks, &virLXCDriverDomainXMLNamespace, - NULL, NULL); + NULL, NULL, NULL); } =20 =20 diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c index c94f9b8577..c28d0e9f43 100644 --- a/src/openvz/openvz_conf.c +++ b/src/openvz/openvz_conf.c @@ -1062,5 +1062,5 @@ virDomainXMLOption *openvzXMLOption(struct openvz_dri= ver *driver) { openvzDomainDefParserConfig.priv =3D driver; return virDomainXMLOptionNew(&openvzDomainDefParserConfig, - NULL, NULL, NULL, NULL); + NULL, NULL, NULL, NULL, NULL); } diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index 3b75cdeb95..2809ae53b9 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -1278,7 +1278,8 @@ virQEMUDriverCreateXMLConf(virQEMUDriver *driver, &virQEMUDriverPrivateDataCallbacks, &virQEMUDriverDomainXMLNamespace, &virQEMUDriverDomainABIStability, - &virQEMUDriverDomainSaveCookie); + &virQEMUDriverDomainSaveCookie, + NULL); } =20 =20 diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 5c8413a6b6..e872553cfc 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -9299,7 +9299,7 @@ qemuProcessQMPConnectMonitor(qemuProcessQMP *proc) monConfig.data.nix.path =3D proc->monpath; monConfig.data.nix.listen =3D false; =20 - if (!(xmlopt =3D virDomainXMLOptionNew(NULL, NULL, NULL, NULL, NULL)) = || + if (!(xmlopt =3D virDomainXMLOptionNew(NULL, NULL, NULL, NULL, NULL, N= ULL)) || !(proc->vm =3D virDomainObjNew(xmlopt)) || !(proc->vm->def =3D virDomainDefNew(xmlopt))) return -1; diff --git a/src/security/virt-aa-helper.c b/src/security/virt-aa-helper.c index 2d0bc99c73..f338488da3 100644 --- a/src/security/virt-aa-helper.c +++ b/src/security/virt-aa-helper.c @@ -632,7 +632,7 @@ get_definition(vahControl * ctl, const char *xmlStr) } =20 if (!(ctl->xmlopt =3D virDomainXMLOptionNew(&virAAHelperDomainDefParse= rConfig, - NULL, NULL, NULL, NULL))) { + NULL, NULL, NULL, NULL, NULL= ))) { vah_error(ctl, 0, _("Failed to create XML config object")); return -1; } diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 24ff6e8967..ea5f690d48 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -460,7 +460,7 @@ testDriverNew(void) if (!(ret =3D virObjectLockableNew(testDriverClass))) return NULL; =20 - if (!(ret->xmlopt =3D virDomainXMLOptionNew(&config, &privatecb, &ns, = NULL, NULL)) || + if (!(ret->xmlopt =3D virDomainXMLOptionNew(&config, &privatecb, &ns, = NULL, NULL, NULL)) || !(ret->eventState =3D virObjectEventStateNew()) || !(ret->ifaces =3D virInterfaceObjListNew()) || !(ret->domains =3D virDomainObjListNew()) || diff --git a/src/vbox/vbox_common.c b/src/vbox/vbox_common.c index e249980195..bd77641d39 100644 --- a/src/vbox/vbox_common.c +++ b/src/vbox/vbox_common.c @@ -143,7 +143,7 @@ vboxDriverObjNew(void) =20 if (!(driver->caps =3D vboxCapsInit()) || !(driver->xmlopt =3D virDomainXMLOptionNew(&vboxDomainDefParserCon= fig, - NULL, NULL, NULL, NULL))) + NULL, NULL, NULL, NULL, N= ULL))) goto cleanup; =20 return driver; diff --git a/src/vmware/vmware_driver.c b/src/vmware/vmware_driver.c index 2a18d73988..3c578434f3 100644 --- a/src/vmware/vmware_driver.c +++ b/src/vmware/vmware_driver.c @@ -139,7 +139,7 @@ vmwareDomainXMLConfigInit(struct vmware_driver *driver) .free =3D vmwareDataFreeFunc= }; vmwareDomainDefParserConfig.priv =3D driver; return virDomainXMLOptionNew(&vmwareDomainDefParserConfig, &priv, - NULL, NULL, NULL); + NULL, NULL, NULL, NULL); } =20 static virDrvOpenStatus diff --git a/src/vmx/vmx.c b/src/vmx/vmx.c index 191f0b5e83..64817080ab 100644 --- a/src/vmx/vmx.c +++ b/src/vmx/vmx.c @@ -696,7 +696,7 @@ virVMXDomainXMLConfInit(virCaps *caps) { virVMXDomainDefParserConfig.priv =3D caps; return virDomainXMLOptionNew(&virVMXDomainDefParserConfig, NULL, - &virVMXDomainXMLNamespace, NULL, NULL); + &virVMXDomainXMLNamespace, NULL, NULL, NU= LL); } =20 char * diff --git a/src/vz/vz_driver.c b/src/vz/vz_driver.c index 017c084ede..571d895167 100644 --- a/src/vz/vz_driver.c +++ b/src/vz/vz_driver.c @@ -331,7 +331,7 @@ vzDriverObjNew(void) if (!(driver->caps =3D vzBuildCapabilities()) || !(driver->xmlopt =3D virDomainXMLOptionNew(&vzDomainDefParserConfi= g, &vzDomainXMLPrivateDataCa= llbacksPtr, - NULL, NULL, NULL)) || + NULL, NULL, NULL, NULL)) = || !(driver->domains =3D virDomainObjListNew()) || !(driver->domainEventState =3D virObjectEventStateNew()) || (vzInitVersion(driver) < 0) || diff --git a/tests/bhyveargv2xmltest.c b/tests/bhyveargv2xmltest.c index 2ccc1379b9..92189a2e58 100644 --- a/tests/bhyveargv2xmltest.c +++ b/tests/bhyveargv2xmltest.c @@ -113,7 +113,7 @@ mymain(void) if ((driver.caps =3D virBhyveCapsBuild()) =3D=3D NULL) return EXIT_FAILURE; =20 - if ((driver.xmlopt =3D virDomainXMLOptionNew(NULL, NULL, + if ((driver.xmlopt =3D virDomainXMLOptionNew(NULL, NULL, NULL, NULL, NULL, NULL)) =3D=3D N= ULL) return EXIT_FAILURE; =20 diff --git a/tests/testutils.c b/tests/testutils.c index 30f91dcd28..8fe624f029 100644 --- a/tests/testutils.c +++ b/tests/testutils.c @@ -989,7 +989,7 @@ static virDomainDefParserConfig virTestGenericDomainDef= ParserConfig =3D { virDomainXMLOption *virTestGenericDomainXMLConfInit(void) { return virDomainXMLOptionNew(&virTestGenericDomainDefParserConfig, - NULL, NULL, NULL, NULL); + NULL, NULL, NULL, NULL, NULL); } =20 =20 --=20 2.37.1