Specifying a balloon size more than the memory size of a guest isn't something that should be rejected when parsing the XML. Truncate the size to the maximum memory size. --- src/conf/domain_conf.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 5f74ab1..d397bca 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -3364,27 +3364,9 @@ virDomainDefPostParseInternal(virDomainDefPtr def, return -1; } - if (def->mem.cur_balloon > virDomainDefGetMemoryActual(def)) { - /* Older libvirt could get into this situation due to - * rounding; if the discrepancy is less than 4MiB, we silently - * round down, otherwise we flag the issue. */ - if (VIR_DIV_UP(def->mem.cur_balloon, 4096) > - VIR_DIV_UP(virDomainDefGetMemoryActual(def), 4096)) { - virReportError(VIR_ERR_XML_ERROR, - _("current memory '%lluk' exceeds " - "maximum '%lluk'"), - def->mem.cur_balloon, - virDomainDefGetMemoryActual(def)); - return -1; - } else { - VIR_DEBUG("Truncating current %lluk to maximum %lluk", - def->mem.cur_balloon, - virDomainDefGetMemoryActual(def)); - def->mem.cur_balloon = virDomainDefGetMemoryActual(def); - } - } else if (def->mem.cur_balloon == 0) { + if (def->mem.cur_balloon > virDomainDefGetMemoryActual(def) || + def->mem.cur_balloon == 0) def->mem.cur_balloon = virDomainDefGetMemoryActual(def); - } if ((def->mem.max_memory || def->mem.memory_slots) && !(def->mem.max_memory && def->mem.memory_slots)) { -- 2.3.5 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list