From dbfb5aa7c03d3a0bc85da97594070d2219055f75 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 14 Apr 2021 16:48:53 +0200 Subject: [PATCH] conf: domain: Introduce an internal variant of virDomainDiskDefNew The XML element parser is going to be modified so that the virStorageSource bits are pre-parsed. Add virDomainDiskDefNewSource, which uses an existing 'src' pointer. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- src/conf/domain_conf.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 57cad6ffde..f59d17930b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2230,25 +2230,32 @@ virDomainDefGetVcpusTopology(const virDomainDef *def, } -virDomainDiskDef * -virDomainDiskDefNew(virDomainXMLOption *xmlopt) +static virDomainDiskDef * +virDomainDiskDefNewSource(virDomainXMLOption *xmlopt, + virStorageSource **src) { + void *privateData = NULL; virDomainDiskDef *ret; - ret = g_new0(virDomainDiskDef, 1); - - ret->src = virStorageSourceNew(); - if (xmlopt && xmlopt->privateData.diskNew && - !(ret->privateData = xmlopt->privateData.diskNew())) - goto error; + !(privateData = xmlopt->privateData.diskNew())) + return NULL; + + ret = g_new0(virDomainDiskDef, 1); + ret->src = g_steal_pointer(src); + ret->privateData = privateData; return ret; +} - error: - virDomainDiskDefFree(ret); - return NULL; + +virDomainDiskDef * +virDomainDiskDefNew(virDomainXMLOption *xmlopt) +{ + g_autoptr(virStorageSource) src = virStorageSourceNew(); + + return virDomainDiskDefNewSource(xmlopt, &src); } -- 2.39.5