$sub
s/seting/setting
On 02/18/2015 09:16 AM, Peter Krempa wrote:
NUMA enabled guest configuration explicitly specifies memory sizes
for
individual nodes. Allowing the virDomainSetMemoryFlags API (and friends)
to change the total doesn't make sense as the individual node configs
are not updated in that case.
Forbid use of the API in case NUMA is specified.
---
src/qemu/qemu_driver.c | 10 ++++++++++
1 file changed, 10 insertions(+)
Peeking forward to the next patch it seems src/lxc/lxc_driver.c has the
same flags & VIR_DOMAIN_MEM_MAXIMUM, then flags & VIR_DOMAIN_AFFECT_CONFIG.
So if the theory is lxc copied qemu, then should this also be done for
lxc? Especially since you're altering the else portion for both.
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index 2b0dac7..e2abbe0 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -2307,6 +2307,16 @@ static int qemuDomainSetMemoryFlags(virDomainPtr dom, unsigned
long newmem,
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
/* Help clang 2.8 decipher the logic flow. */
sa_assert(persistentDef);
+
+ /* resizing memory with NUMA nodes specified doesn't work as there
+ * is no way to decrease the individual node sizes along */
Looks like you didn't finish your thoughts with the comment... 'along ?'
Seems reasonable, but is there a downside? I don't have the
relationship between the balloon driver and numa currently paged in ;-)
It also seems that something like this would be documented - that is -
in the API and perhaps virsh.pod that changing maxmem for certain
hypervisors for domains using numa cannot be done (instead use...).
John
+ if (virDomainNumaGetNodeCount(persistentDef->numa)
> 0) {
+ virReportError(VIR_ERR_OPERATION_INVALID, "%s",
+ _("maximum memory size of a domain with NUMA "
+ "nodes cannot be modified with this API"));
+ goto endjob;
+ }
+
persistentDef->mem.max_balloon = newmem;
if (persistentDef->mem.cur_balloon > newmem)
persistentDef->mem.cur_balloon = newmem;