On 12/12/2017 08:36 AM, Michal Privoznik wrote:
https://bugzilla.redhat.com/show_bug.cgi?id=1448149
If a domain has no numa nodes, that means we don't put any
memory-backend-file onto the qemu command line. That in turn
means we can't set access='shared'. Therefore, we should produce
an error instead of ignoring the setting silently.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_command.c | 9 +++
tests/qemuxml2argvdata/hugepages-memaccess3.xml | 87 +++++++++++++++++++++++++
tests/qemuxml2argvtest.c | 3 +
3 files changed, 99 insertions(+)
create mode 100644 tests/qemuxml2argvdata/hugepages-memaccess3.xml
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index 2dd50a214..dfc17ce34 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -7682,6 +7682,15 @@ qemuBuildMemPathStr(virQEMUDriverConfigPtr cfg,
return -1;
}
+ if (def->mem.access != VIR_DOMAIN_MEMORY_ACCESS_DEFAULT &&
+ def->mem.access != VIR_DOMAIN_MEMORY_ACCESS_PRIVATE) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("memory access mode '%s' not supported "
+ "without guest numa node"),
+ virDomainMemoryAccessTypeToString(def->mem.access));
+ return -1;
+ }
+
This works; however, why not move this and the virQEMUCapsGet check into
a qemu_domain qemuDomainDef*Memory*Validate type function? Thus
removing failure checks from qemu_command...
I suppose it's OK here, but I think better there. Still for the concept,
Reviewed-by: John Ferlan <jferlan(a)redhat.com>
John
[...]