From: Jiri Denemark Date: Thu, 15 Mar 2018 10:39:50 +0000 (+0100) Subject: qemu: Limit usage of qemuMonitorMigrationParams X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=90807b104ec6a97df3783ecb690f29b05c88710b;p=libvirt.git qemu: Limit usage of qemuMonitorMigrationParams Use this internal structure only in qemu_migration_params.c and change other non-test users to use the high level qemuMigrationParams struct. Signed-off-by: Jiri Denemark Reviewed-by: Ján Tomko --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index bd7970066f..4ec6f11902 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -13533,8 +13533,7 @@ qemuDomainMigrateGetMaxDowntime(virDomainPtr dom, { virQEMUDriverPtr driver = dom->conn->privateData; virDomainObjPtr vm; - qemuDomainObjPrivatePtr priv; - qemuMonitorMigrationParams migparams = { 0 }; + qemuMigrationParamsPtr migParams = NULL; int ret = -1; virCheckFlags(0, -1); @@ -13554,27 +13553,24 @@ qemuDomainMigrateGetMaxDowntime(virDomainPtr dom, goto endjob; } - priv = vm->privateData; - qemuDomainObjEnterMonitor(driver, vm); + if (qemuMigrationParamsFetch(driver, vm, QEMU_ASYNC_JOB_NONE, + &migParams) < 0) + goto endjob; - if (qemuMonitorGetMigrationParams(priv->mon, &migparams) == 0) { - if (migparams.downtimeLimit_set) { - *downtime = migparams.downtimeLimit; - ret = 0; - } else { - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("Querying migration downtime is not supported by " - "QEMU binary")); - } + if (qemuMigrationParamsGetDowntimeLimit(migParams, downtime) == 1) { + virReportError(VIR_ERR_OPERATION_INVALID, "%s", + _("Querying migration downtime is not supported by " + "QEMU binary")); + goto endjob; } - if (qemuDomainObjExitMonitor(driver, vm) < 0) - ret = -1; + ret = 0; endjob: qemuDomainObjEndJob(driver, vm); cleanup: + qemuMigrationParamsFree(migParams); virDomainObjEndAPI(&vm); return ret; } diff --git a/src/qemu/qemu_migration_params.c b/src/qemu/qemu_migration_params.c index 94de0458f5..cadb402b0f 100644 --- a/src/qemu/qemu_migration_params.c +++ b/src/qemu/qemu_migration_params.c @@ -553,6 +553,22 @@ qemuMigrationParamsFetch(virQEMUDriverPtr driver, } +/** + * Returns 0 on success, + * 1 if the parameter is not supported by QEMU. + */ +int +qemuMigrationParamsGetDowntimeLimit(qemuMigrationParamsPtr migParams, + unsigned long long *value) +{ + if (!migParams->params.downtimeLimit_set) + return 1; + + *value = migParams->params.downtimeLimit; + return 0; +} + + /** * qemuMigrationParamsCheck: * diff --git a/src/qemu/qemu_migration_params.h b/src/qemu/qemu_migration_params.h index 0a30dcd623..cc9a14601b 100644 --- a/src/qemu/qemu_migration_params.h +++ b/src/qemu/qemu_migration_params.h @@ -79,6 +79,10 @@ qemuMigrationParamsFetch(virQEMUDriverPtr driver, int asyncJob, qemuMigrationParamsPtr *migParams); +int +qemuMigrationParamsGetDowntimeLimit(qemuMigrationParamsPtr migParams, + unsigned long long *value); + int qemuMigrationParamsCheck(virQEMUDriverPtr driver, virDomainObjPtr vm,