diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 0128c9d480..17bbeddec6 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -9343,7 +9343,6 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt, g_autofree char *target = NULL; g_autofree char *bus = NULL; g_autofree char *serial = NULL; - g_autofree char *startupPolicy = NULL; g_autofree char *removable = NULL; g_autofree char *logical_block_size = NULL; g_autofree char *physical_block_size = NULL; @@ -9401,7 +9400,11 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt, source = true; - startupPolicy = virXMLPropString(cur, "startupPolicy"); + if (virXMLPropEnum(cur, "startupPolicy", + virDomainStartupPolicyTypeFromString, + VIR_XML_PROP_OPTIONAL | VIR_XML_PROP_NONZERO, + &def->startupPolicy) < 0) + return NULL; if (!(flags & VIR_DOMAIN_DEF_PARSE_INACTIVE) && (tmp = virXMLPropString(cur, "index")) && @@ -9655,18 +9658,6 @@ virDomainDiskDefParseXML(virDomainXMLOption *xmlopt, return NULL; } - if (startupPolicy) { - int val; - - if ((val = virDomainStartupPolicyTypeFromString(startupPolicy)) <= 0) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, - _("unknown startupPolicy value '%s'"), - startupPolicy); - return NULL; - } - def->startupPolicy = val; - } - def->dst = g_steal_pointer(&target); if (authdef) { /* If we've already parsed and found an child, diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 2f8ef74020..99ab2a96d9 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -573,7 +573,7 @@ struct _virDomainDiskDef { virTristateSwitch event_idx; virTristateSwitch copy_on_read; int snapshot; /* virDomainSnapshotLocation, snapshot_conf.h */ - int startupPolicy; /* enum virDomainStartupPolicy */ + virDomainStartupPolicy startupPolicy; bool transient; virDomainDeviceInfo info; int rawio; /* enum virTristateBool */