mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-30 18:50:18 +03:00
snapshot: ABI stability must include memory sizing
Commit 973fcd8f introduced the ability for qemu to reject snapshot reversion on an ABI incompatibility; but the very example that was first proposed on-list[1] as a demonstration of an ABI incompatibility, namely that of changing the max memory allocation, was not being checked for, resulting in a cryptic failure when running with larger max mem than what the snapshot was created with: error: operation failed: Error -22 while loading VM state This commit merely protects the three variables within mem that are referenced by qemu_command.c, rather than all 7 (the other 4 variables affect cgroup handling, but as far as I can tell, have no visible effect to the qemu guest). This also affects migration and save file handling, which are other places where we perform ABI compatibility checks. [1] https://www.redhat.com/archives/libvir-list/2010-December/msg00331.html * src/conf/domain_conf.c (virDomainDefCheckABIStability): Add memory sizing checks.
This commit is contained in:
parent
72f865dd23
commit
f2fc1eee4c
@ -8229,6 +8229,26 @@ bool virDomainDefCheckABIStability(virDomainDefPtr src,
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (src->mem.max_balloon != dst->mem.max_balloon) {
|
||||
virDomainReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("Target domain max memory %ld does not match source %ld"),
|
||||
dst->mem.max_balloon, src->mem.max_balloon);
|
||||
goto cleanup;
|
||||
}
|
||||
if (src->mem.cur_balloon != dst->mem.cur_balloon) {
|
||||
virDomainReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("Target domain current memory %ld does not match source %ld"),
|
||||
dst->mem.cur_balloon, src->mem.cur_balloon);
|
||||
goto cleanup;
|
||||
}
|
||||
if (src->mem.hugepage_backed != dst->mem.hugepage_backed) {
|
||||
virDomainReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("Target domain huge page backing %ld does not match source %ld"),
|
||||
dst->mem.hugepage_backed,
|
||||
src->mem.hugepage_backed);
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
if (src->vcpus != dst->vcpus) {
|
||||
virDomainReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||
_("Target domain vpu count %d does not match source %d"),
|
||||
|
Loading…
x
Reference in New Issue
Block a user