mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
qemu: Restore original memory locking limit on reconnect
Commit v8.4.0-287-gd4d3bb8130 tried to make sure the original pre-migration memory locking limit is restored at the end of migration, but it missed the case when libvirt daemon is restarted during migration which needs to be aborted on reconnect. And if this was not enough, I forgot to actually save the status XML after setting the field in priv (in the commit mentioned above and also in v8.4.0-291-gd375993ab3). https://bugzilla.redhat.com/show_bug.cgi?id=2107424 Signed-off-by: Jiri Denemark <jdenemar@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
9c3d398df1
commit
bb9badb916
@ -4672,10 +4672,12 @@ qemuMigrationSrcStart(virDomainObj *vm,
|
||||
switch (spec->destType) {
|
||||
case MIGRATION_DEST_HOST:
|
||||
if (STREQ(spec->dest.host.protocol, "rdma") &&
|
||||
virMemoryLimitIsSet(vm->def->mem.hard_limit) &&
|
||||
qemuDomainSetMaxMemLock(vm, vm->def->mem.hard_limit << 10,
|
||||
&priv->preMigrationMemlock) < 0) {
|
||||
return -1;
|
||||
virMemoryLimitIsSet(vm->def->mem.hard_limit)) {
|
||||
if (qemuDomainSetMaxMemLock(vm, vm->def->mem.hard_limit << 10,
|
||||
&priv->preMigrationMemlock) < 0)
|
||||
return -1;
|
||||
/* Store the original memory locking limit */
|
||||
qemuDomainSaveStatus(vm);
|
||||
}
|
||||
return qemuMonitorMigrateToHost(priv->mon, migrateFlags,
|
||||
spec->dest.host.protocol,
|
||||
@ -4868,6 +4870,9 @@ qemuMigrationSrcRun(virQEMUDriver *driver,
|
||||
|
||||
if (qemuDomainSetMaxMemLock(vm, limit << 10, &priv->preMigrationMemlock) < 0)
|
||||
goto error;
|
||||
|
||||
/* Store the original memory locking limit */
|
||||
qemuDomainSaveStatus(vm);
|
||||
}
|
||||
|
||||
if (storageMigration) {
|
||||
|
@ -3678,6 +3678,7 @@ qemuProcessRecoverMigration(virQEMUDriver *driver,
|
||||
{
|
||||
virDomainJobStatus migStatus = VIR_DOMAIN_JOB_STATUS_NONE;
|
||||
qemuDomainJobPrivate *jobPriv = job->privateData;
|
||||
qemuDomainObjPrivate *priv = vm->privateData;
|
||||
virDomainState state;
|
||||
int reason;
|
||||
int rc;
|
||||
@ -3727,6 +3728,7 @@ qemuProcessRecoverMigration(virQEMUDriver *driver,
|
||||
|
||||
qemuMigrationParamsReset(driver, vm, VIR_ASYNC_JOB_NONE,
|
||||
jobPriv->migParams, job->apiFlags);
|
||||
qemuDomainSetMaxMemLock(vm, 0, &priv->preMigrationMemlock);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user