mirror of
https://github.com/libvirt/libvirt.git
synced 2025-02-25 18:55:26 -06:00
conf: Always parse all firmware information
Currently we're simply ignoring some elements and attributes, such as the loader path, when firmware autoselection is enabled because we know we're not going to use them. This makes sense, but has the unfortunate consequence of confusing users who experience part of their configuration simply going away for no apparent reason. A more user-friendly approach is to produce meaningful error messages in those scenarios. As a first step towards that goal, stop conditionally parsing information. Signed-off-by: Andrea Bolognani <abologna@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
161b31f958
commit
421d4f1fa8
@ -18018,8 +18018,7 @@ virDomainLoaderDefParseXMLNvram(virDomainLoaderDef *loader,
|
|||||||
xmlNodePtr nvramSourceNode,
|
xmlNodePtr nvramSourceNode,
|
||||||
xmlXPathContextPtr ctxt,
|
xmlXPathContextPtr ctxt,
|
||||||
virDomainXMLOption *xmlopt,
|
virDomainXMLOption *xmlopt,
|
||||||
unsigned int flags,
|
unsigned int flags)
|
||||||
bool fwAutoSelect)
|
|
||||||
{
|
{
|
||||||
g_autoptr(virStorageSource) src = virStorageSourceNew();
|
g_autoptr(virStorageSource) src = virStorageSourceNew();
|
||||||
int typePresent;
|
int typePresent;
|
||||||
@ -18027,8 +18026,7 @@ virDomainLoaderDefParseXMLNvram(virDomainLoaderDef *loader,
|
|||||||
if (!nvramNode)
|
if (!nvramNode)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!fwAutoSelect)
|
loader->nvramTemplate = virXMLPropString(nvramNode, "template");
|
||||||
loader->nvramTemplate = virXMLPropString(nvramNode, "template");
|
|
||||||
|
|
||||||
src->format = VIR_STORAGE_FILE_RAW;
|
src->format = VIR_STORAGE_FILE_RAW;
|
||||||
|
|
||||||
@ -18070,33 +18068,29 @@ virDomainLoaderDefParseXML(virDomainLoaderDef *loader,
|
|||||||
xmlNodePtr nvramSourceNode,
|
xmlNodePtr nvramSourceNode,
|
||||||
xmlXPathContextPtr ctxt,
|
xmlXPathContextPtr ctxt,
|
||||||
virDomainXMLOption *xmlopt,
|
virDomainXMLOption *xmlopt,
|
||||||
unsigned int flags,
|
unsigned int flags)
|
||||||
bool fwAutoSelect)
|
|
||||||
{
|
{
|
||||||
if (virDomainLoaderDefParseXMLNvram(loader,
|
if (virDomainLoaderDefParseXMLNvram(loader,
|
||||||
nvramNode, nvramSourceNode,
|
nvramNode, nvramSourceNode,
|
||||||
ctxt, xmlopt, flags,
|
ctxt, xmlopt, flags) < 0)
|
||||||
fwAutoSelect) < 0)
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (!loaderNode)
|
if (!loaderNode)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!fwAutoSelect) {
|
if (virXMLPropTristateBool(loaderNode, "readonly", VIR_XML_PROP_NONE,
|
||||||
if (virXMLPropTristateBool(loaderNode, "readonly", VIR_XML_PROP_NONE,
|
&loader->readonly) < 0)
|
||||||
&loader->readonly) < 0)
|
return -1;
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (virXMLPropEnum(loaderNode, "type", virDomainLoaderTypeFromString,
|
if (virXMLPropEnum(loaderNode, "type", virDomainLoaderTypeFromString,
|
||||||
VIR_XML_PROP_NONZERO, &loader->type) < 0)
|
VIR_XML_PROP_NONZERO, &loader->type) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (!(loader->path = virXMLNodeContentString(loaderNode)))
|
if (!(loader->path = virXMLNodeContentString(loaderNode)))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (STREQ(loader->path, ""))
|
if (STREQ(loader->path, ""))
|
||||||
VIR_FREE(loader->path);
|
VIR_FREE(loader->path);
|
||||||
}
|
|
||||||
|
|
||||||
if (virXMLPropTristateBool(loaderNode, "secure", VIR_XML_PROP_NONE,
|
if (virXMLPropTristateBool(loaderNode, "secure", VIR_XML_PROP_NONE,
|
||||||
&loader->secure) < 0)
|
&loader->secure) < 0)
|
||||||
@ -18498,7 +18492,6 @@ virDomainDefParseBootLoaderOptions(virDomainDef *def,
|
|||||||
xmlNodePtr loaderNode = virXPathNode("./os/loader[1]", ctxt);
|
xmlNodePtr loaderNode = virXPathNode("./os/loader[1]", ctxt);
|
||||||
xmlNodePtr nvramNode = virXPathNode("./os/nvram[1]", ctxt);
|
xmlNodePtr nvramNode = virXPathNode("./os/nvram[1]", ctxt);
|
||||||
xmlNodePtr nvramSourceNode = virXPathNode("./os/nvram/source[1]", ctxt);
|
xmlNodePtr nvramSourceNode = virXPathNode("./os/nvram/source[1]", ctxt);
|
||||||
const bool fwAutoSelect = def->os.firmware != VIR_DOMAIN_OS_DEF_FIRMWARE_NONE;
|
|
||||||
|
|
||||||
if (!loaderNode && !nvramNode)
|
if (!loaderNode && !nvramNode)
|
||||||
return 0;
|
return 0;
|
||||||
@ -18507,8 +18500,7 @@ virDomainDefParseBootLoaderOptions(virDomainDef *def,
|
|||||||
|
|
||||||
if (virDomainLoaderDefParseXML(def->os.loader,
|
if (virDomainLoaderDefParseXML(def->os.loader,
|
||||||
loaderNode, nvramNode, nvramSourceNode,
|
loaderNode, nvramNode, nvramSourceNode,
|
||||||
ctxt, xmlopt, flags,
|
ctxt, xmlopt, flags) < 0)
|
||||||
fwAutoSelect) < 0)
|
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user