From 047b45f35915b4a92f0b1fce4638430092999d03 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Mon, 7 Dec 2020 14:03:22 +0100 Subject: [PATCH] virDomainBackupDiskDefParseXML: Use virDomainStorageSourceParseBase MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Don't duplicate code to parse the virStorageSource basics. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/conf/backup_conf.c | 35 ++++++++++------------------------- 1 file changed, 10 insertions(+), 25 deletions(-) diff --git a/src/conf/backup_conf.c b/src/conf/backup_conf.c index 47e3bc1d60..11d419ce2b 100644 --- a/src/conf/backup_conf.c +++ b/src/conf/backup_conf.c @@ -104,7 +104,7 @@ virDomainBackupDiskDefParseXML(xmlNodePtr node, { VIR_XPATH_NODE_AUTORESTORE(ctxt) g_autofree char *type = NULL; - g_autofree char *driver = NULL; + g_autofree char *format = NULL; g_autofree char *backup = NULL; g_autofree char *state = NULL; g_autofree char *backupmode = NULL; @@ -169,23 +169,17 @@ virDomainBackupDiskDefParseXML(xmlNodePtr node, def->state = tmp; } - def->store = virStorageSourceNew(); + type = virXMLPropString(node, "type"); + format = virXPathString("string(./driver/@type)", ctxt); - if ((type = virXMLPropString(node, "type"))) { - if ((def->store->type = virStorageTypeFromString(type)) <= 0) { - virReportError(VIR_ERR_XML_ERROR, - _("unknown disk backup type '%s'"), type); - return -1; - } + if (!(def->store = virDomainStorageSourceParseBase(type, format, NULL))) + return -1; - if (def->store->type != VIR_STORAGE_TYPE_FILE && - def->store->type != VIR_STORAGE_TYPE_BLOCK) { - virReportError(VIR_ERR_XML_ERROR, - _("unsupported disk backup type '%s'"), type); - return -1; - } - } else { - def->store->type = VIR_STORAGE_TYPE_FILE; + if (def->store->type != VIR_STORAGE_TYPE_FILE && + def->store->type != VIR_STORAGE_TYPE_BLOCK) { + virReportError(VIR_ERR_XML_ERROR, + _("unsupported disk backup type '%s'"), type); + return -1; } if (push) @@ -198,15 +192,6 @@ virDomainBackupDiskDefParseXML(xmlNodePtr node, storageSourceParseFlags, xmlopt) < 0) return -1; - if ((driver = virXPathString("string(./driver/@type)", ctxt))) { - def->store->format = virStorageFileFormatTypeFromString(driver); - if (def->store->format <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown disk backup driver '%s'"), driver); - return -1; - } - } - return 0; }