mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
conf: Always truncate balloon size to maximum memory size
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.
This commit is contained in:
parent
85d8ede9eb
commit
fccc2c3313
@ -3366,27 +3366,9 @@ virDomainDefPostParseInternal(virDomainDefPtr def,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (def->mem.cur_balloon > virDomainDefGetMemoryActual(def)) {
|
if (def->mem.cur_balloon > virDomainDefGetMemoryActual(def) ||
|
||||||
/* Older libvirt could get into this situation due to
|
def->mem.cur_balloon == 0)
|
||||||
* 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) {
|
|
||||||
def->mem.cur_balloon = virDomainDefGetMemoryActual(def);
|
def->mem.cur_balloon = virDomainDefGetMemoryActual(def);
|
||||||
}
|
|
||||||
|
|
||||||
if ((def->mem.max_memory || def->mem.memory_slots) &&
|
if ((def->mem.max_memory || def->mem.memory_slots) &&
|
||||||
!(def->mem.max_memory && def->mem.memory_slots)) {
|
!(def->mem.max_memory && def->mem.memory_slots)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user