{
virQEMUDriverPtr driver = dom->conn->privateData;
virDomainObjPtr vm;
- qemuDomainObjPrivatePtr priv;
- qemuMonitorMigrationParams migparams = { 0 };
+ qemuMigrationParamsPtr migParams = NULL;
int ret = -1;
virCheckFlags(0, -1);
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;
}
}
+/**
+ * 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:
*
int asyncJob,
qemuMigrationParamsPtr *migParams);
+int
+qemuMigrationParamsGetDowntimeLimit(qemuMigrationParamsPtr migParams,
+ unsigned long long *value);
+
int
qemuMigrationParamsCheck(virQEMUDriverPtr driver,
virDomainObjPtr vm,