1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

qemu: Introduce qemuMigrationSetParams

Several places in the code update qemuMonitorMigrationParams structure
and qemuMigrationSetParams is then used to set them all at once.

Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
This commit is contained in:
Jiri Denemark 2016-06-20 16:27:07 +02:00
parent f6e12b4029
commit 8d58952bed

View File

@ -3432,11 +3432,11 @@ static int
qemuMigrationSetCompression(virQEMUDriverPtr driver, qemuMigrationSetCompression(virQEMUDriverPtr driver,
virDomainObjPtr vm, virDomainObjPtr vm,
qemuDomainAsyncJob job, qemuDomainAsyncJob job,
qemuMigrationCompressionPtr compression) qemuMigrationCompressionPtr compression,
qemuMonitorMigrationParamsPtr migParams)
{ {
int ret = -1; int ret = -1;
qemuDomainObjPrivatePtr priv = vm->privateData; qemuDomainObjPrivatePtr priv = vm->privateData;
qemuMonitorMigrationParams migParams = { 0 };
if (qemuMigrationSetOption(driver, vm, if (qemuMigrationSetOption(driver, vm,
QEMU_MONITOR_MIGRATION_CAPS_XBZRLE, QEMU_MONITOR_MIGRATION_CAPS_XBZRLE,
@ -3455,17 +3455,14 @@ qemuMigrationSetCompression(virQEMUDriverPtr driver,
if (qemuDomainObjEnterMonitorAsync(driver, vm, job) < 0) if (qemuDomainObjEnterMonitorAsync(driver, vm, job) < 0)
return -1; return -1;
migParams.compressLevel_set = compression->level_set; migParams->compressLevel_set = compression->level_set;
migParams.compressLevel = compression->level; migParams->compressLevel = compression->level;
migParams.compressThreads_set = compression->threads_set; migParams->compressThreads_set = compression->threads_set;
migParams.compressThreads = compression->threads; migParams->compressThreads = compression->threads;
migParams.decompressThreads_set = compression->dthreads_set; migParams->decompressThreads_set = compression->dthreads_set;
migParams.decompressThreads = compression->dthreads; migParams->decompressThreads = compression->dthreads;
if (qemuMonitorSetMigrationParams(priv->mon, &migParams) < 0)
goto cleanup;
if (compression->xbzrle_cache_set && if (compression->xbzrle_cache_set &&
qemuMonitorSetMigrationCacheSize(priv->mon, qemuMonitorSetMigrationCacheSize(priv->mon,
@ -3481,6 +3478,32 @@ qemuMigrationSetCompression(virQEMUDriverPtr driver,
return ret; return ret;
} }
static int
qemuMigrationSetParams(virQEMUDriverPtr driver,
virDomainObjPtr vm,
qemuDomainAsyncJob job,
qemuMonitorMigrationParamsPtr migParams)
{
qemuDomainObjPrivatePtr priv = vm->privateData;
int ret = -1;
if (qemuDomainObjEnterMonitorAsync(driver, vm, job) < 0)
return -1;
if (qemuMonitorSetMigrationParams(priv->mon, migParams) < 0)
goto cleanup;
ret = 0;
cleanup:
if (qemuDomainObjExitMonitor(driver, vm) < 0)
ret = -1;
return ret;
}
static int static int
qemuMigrationPrepareAny(virQEMUDriverPtr driver, qemuMigrationPrepareAny(virQEMUDriverPtr driver,
virConnectPtr dconn, virConnectPtr dconn,
@ -3516,6 +3539,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
bool stopProcess = false; bool stopProcess = false;
bool relabel = false; bool relabel = false;
int rv; int rv;
qemuMonitorMigrationParams migParams = { 0 };
virNWFilterReadLockFilterUpdates(); virNWFilterReadLockFilterUpdates();
@ -3698,7 +3722,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
} }
if (qemuMigrationSetCompression(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN, if (qemuMigrationSetCompression(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN,
compression) < 0) compression, &migParams) < 0)
goto stopjob; goto stopjob;
if (STREQ_NULLABLE(protocol, "rdma") && if (STREQ_NULLABLE(protocol, "rdma") &&
@ -3717,6 +3741,10 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
QEMU_ASYNC_JOB_MIGRATION_IN) < 0) QEMU_ASYNC_JOB_MIGRATION_IN) < 0)
goto stopjob; goto stopjob;
if (qemuMigrationSetParams(driver, vm, QEMU_ASYNC_JOB_MIGRATION_IN,
&migParams) < 0)
goto stopjob;
if (mig->nbd && if (mig->nbd &&
flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC) && flags & (VIR_MIGRATE_NON_SHARED_DISK | VIR_MIGRATE_NON_SHARED_INC) &&
virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_SERVER)) { virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_NBD_SERVER)) {
@ -4554,6 +4582,7 @@ qemuMigrationRun(virQEMUDriverPtr driver,
virDomainDefPtr persistDef = NULL; virDomainDefPtr persistDef = NULL;
char *timestamp; char *timestamp;
int rc; int rc;
qemuMonitorMigrationParams migParams = { 0 };
VIR_DEBUG("driver=%p, vm=%p, cookiein=%s, cookieinlen=%d, " VIR_DEBUG("driver=%p, vm=%p, cookiein=%s, cookieinlen=%d, "
"cookieout=%p, cookieoutlen=%p, flags=%lx, resource=%lu, " "cookieout=%p, cookieoutlen=%p, flags=%lx, resource=%lu, "
@ -4634,7 +4663,7 @@ qemuMigrationRun(virQEMUDriverPtr driver,
} }
if (qemuMigrationSetCompression(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT, if (qemuMigrationSetCompression(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT,
compression) < 0) compression, &migParams) < 0)
goto cleanup; goto cleanup;
if (qemuMigrationSetOption(driver, vm, if (qemuMigrationSetOption(driver, vm,
@ -4654,6 +4683,10 @@ qemuMigrationRun(virQEMUDriverPtr driver,
QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) QEMU_ASYNC_JOB_MIGRATION_OUT) < 0)
goto cleanup; goto cleanup;
if (qemuMigrationSetParams(driver, vm, QEMU_ASYNC_JOB_MIGRATION_OUT,
&migParams) < 0)
goto cleanup;
if (qemuDomainObjEnterMonitorAsync(driver, vm, if (qemuDomainObjEnterMonitorAsync(driver, vm,
QEMU_ASYNC_JOB_MIGRATION_OUT) < 0) QEMU_ASYNC_JOB_MIGRATION_OUT) < 0)
goto cleanup; goto cleanup;