diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c index 8e9428a5bb..e1f5e49683 100644 --- a/src/qemu/qemu_migration.c +++ b/src/qemu/qemu_migration.c @@ -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) { diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d42333195a..137dcf5cf4 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -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; }