mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-25 01:34:11 +03:00
conf: Require nvdimm path in validate step
Our code expects that a nvdimm has a path defined always. And the parser does check for that. Well, not fully - only when parsing <source/> (which is an optional element). So if the element is not in the XML then the check is not performed and the assumption is broken. Verify in the memory def validator that a path was set. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com> Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com> Tested-by: Han Han <hhan@redhat.com>
This commit is contained in:
parent
13643954e8
commit
6e4fbc97ff
@ -6694,6 +6694,12 @@ virDomainMemoryDefValidate(const virDomainMemoryDef *mem,
|
|||||||
const virDomainDef *def)
|
const virDomainDef *def)
|
||||||
{
|
{
|
||||||
if (mem->model == VIR_DOMAIN_MEMORY_MODEL_NVDIMM) {
|
if (mem->model == VIR_DOMAIN_MEMORY_MODEL_NVDIMM) {
|
||||||
|
if (!mem->nvdimmPath) {
|
||||||
|
virReportError(VIR_ERR_XML_DETAIL, "%s",
|
||||||
|
_("path is required for model 'nvdimm'"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (mem->discard == VIR_TRISTATE_BOOL_YES) {
|
if (mem->discard == VIR_TRISTATE_BOOL_YES) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
_("discard is not supported for nvdimms"));
|
_("discard is not supported for nvdimms"));
|
||||||
@ -16690,11 +16696,7 @@ virDomainMemorySourceDefParseXML(xmlNodePtr node,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_MEMORY_MODEL_NVDIMM:
|
case VIR_DOMAIN_MEMORY_MODEL_NVDIMM:
|
||||||
if (!(def->nvdimmPath = virXPathString("string(./path)", ctxt))) {
|
def->nvdimmPath = virXPathString("string(./path)", ctxt);
|
||||||
virReportError(VIR_ERR_XML_DETAIL, "%s",
|
|
||||||
_("path is required for model 'nvdimm'"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (virDomainParseMemory("./alignsize", "./alignsize/@unit", ctxt,
|
if (virDomainParseMemory("./alignsize", "./alignsize/@unit", ctxt,
|
||||||
&def->alignsize, false, false) < 0)
|
&def->alignsize, false, false) < 0)
|
||||||
|
@ -686,12 +686,6 @@ AppArmorSetMemoryLabel(virSecurityManagerPtr mgr,
|
|||||||
|
|
||||||
switch ((virDomainMemoryModel) mem->model) {
|
switch ((virDomainMemoryModel) mem->model) {
|
||||||
case VIR_DOMAIN_MEMORY_MODEL_NVDIMM:
|
case VIR_DOMAIN_MEMORY_MODEL_NVDIMM:
|
||||||
if (mem->nvdimmPath == NULL) {
|
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
|
||||||
_("%s: nvdimm without a path"),
|
|
||||||
__func__);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (!virFileExists(mem->nvdimmPath)) {
|
if (!virFileExists(mem->nvdimmPath)) {
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("%s: \'%s\' does not exist"),
|
_("%s: \'%s\' does not exist"),
|
||||||
|
Loading…
Reference in New Issue
Block a user