* false otherwise.
*/
bool
-qemuMigrationSrcIsAllowed(virQEMUDriver *driver,
+qemuMigrationSrcIsAllowed(virQEMUDriver *driver G_GNUC_UNUSED,
virDomainObj *vm,
bool remote,
int asyncJob,
return false;
}
- if (qemuProcessAutoDestroyActive(driver, vm)) {
+ if (virCloseCallbacksDomainIsRegistered(vm, NULL, qemuProcessAutoDestroy)) {
virReportError(VIR_ERR_OPERATION_INVALID,
"%s", _("domain is marked for auto destroy"));
return false;
static char *
qemuMigrationSrcBeginResumePhase(virConnectPtr conn,
- virQEMUDriver *driver,
+ virQEMUDriver *driver G_GNUC_UNUSED,
virDomainObj *vm,
const char *xmlin,
char **cookieout,
if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_BEGIN_RESUME) < 0)
return NULL;
- virCloseCallbacksUnset(driver->closeCallbacks, vm,
- qemuMigrationAnyConnectionClosed);
+ virCloseCallbacksDomainRemove(vm, NULL, qemuMigrationAnyConnectionClosed);
qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob);
xml = qemuMigrationSrcBeginResume(vm, xmlin, cookieout, cookieoutlen, flags);
- if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn,
- qemuMigrationAnyConnectionClosed) < 0)
- g_clear_pointer(&xml, g_free);
+ virCloseCallbacksDomainAdd(vm, conn, qemuMigrationAnyConnectionClosed);
if (!xml)
ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POSTCOPY_FAILED));
* This prevents any other APIs being invoked while migration is taking
* place.
*/
- if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn,
- qemuMigrationAnyConnectionClosed) < 0)
- goto endjob;
+ virCloseCallbacksDomainAdd(vm, conn, qemuMigrationAnyConnectionClosed);
}
ret = g_steal_pointer(&xml);
QEMU_MIGRATION_COOKIE_CAPS) < 0)
VIR_WARN("Unable to encode migration cookie");
- virCloseCallbacksSet(driver->closeCallbacks, vm, conn,
- qemuMigrationAnyConnectionClosed);
+ virCloseCallbacksDomainAdd(vm, conn, qemuMigrationAnyConnectionClosed);
if (autoPort)
priv->migrationPort = port;
if (qemuMigrationJobStartPhase(vm, phase) < 0)
goto cleanup;
- virCloseCallbacksUnset(driver->closeCallbacks, vm,
- qemuMigrationAnyConnectionClosed);
+ virCloseCallbacksDomainRemove(vm, NULL, qemuMigrationAnyConnectionClosed);
qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob);
ret = qemuMigrationSrcConfirmPhase(driver, vm,
if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM_RESUME) < 0)
return -1;
- virCloseCallbacksUnset(driver->closeCallbacks, vm,
- qemuMigrationAnyConnectionClosed);
+ virCloseCallbacksDomainRemove(vm, NULL, qemuMigrationAnyConnectionClosed);
qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob);
ret = qemuMigrationSrcPerformNative(driver, vm, NULL, uri,
cookieout, cookieoutlen, flags,
0, NULL, NULL, 0, NULL, migParams, NULL);
- if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn,
- qemuMigrationAnyConnectionClosed) < 0)
- ret = -1;
+ virCloseCallbacksDomainAdd(vm, conn, qemuMigrationAnyConnectionClosed);
if (ret < 0)
ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POSTCOPY_FAILED));
if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_BEGIN_RESUME) < 0)
goto cleanup;
- virCloseCallbacksUnset(driver->closeCallbacks, vm,
- qemuMigrationAnyConnectionClosed);
+ virCloseCallbacksDomainRemove(vm, NULL, qemuMigrationAnyConnectionClosed);
qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob);
} else {
if (qemuMigrationJobStart(vm, VIR_ASYNC_JOB_MIGRATION_OUT,
if (qemuMigrationJobStartPhase(vm, QEMU_MIGRATION_PHASE_PERFORM3) < 0)
goto cleanup;
- virCloseCallbacksUnset(driver->closeCallbacks, vm,
- qemuMigrationAnyConnectionClosed);
+ virCloseCallbacksDomainRemove(vm, NULL, qemuMigrationAnyConnectionClosed);
if (qemuMigrationSrcPerformNative(driver, vm, persist_xml, uri, cookiein, cookieinlen,
cookieout, cookieoutlen,
nmigrate_disks, migrate_disks, migParams, nbdURI) < 0)
goto cleanup;
- if (virCloseCallbacksSet(driver->closeCallbacks, vm, conn,
- qemuMigrationAnyConnectionClosed) < 0)
- goto cleanup;
+ virCloseCallbacksDomainAdd(vm, conn, qemuMigrationAnyConnectionClosed);
ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_PERFORM3_DONE));
ret = 0;
* nothing to remove when we are resuming post-copy migration.
*/
if (job->phase < QEMU_MIGRATION_PHASE_POSTCOPY_FAILED)
- qemuProcessAutoDestroyRemove(driver, vm);
+ virCloseCallbacksDomainRemove(vm, NULL, qemuProcessAutoDestroy);
/* Remove completed stats for post-copy, everything but timing fields
* is obsolete anyway.
if (virDomainObjIsFailedPostcopy(vm)) {
ignore_value(qemuMigrationJobSetPhase(vm, QEMU_MIGRATION_PHASE_POSTCOPY_FAILED));
- qemuProcessAutoDestroyRemove(driver, vm);
+ virCloseCallbacksDomainRemove(vm, NULL, qemuProcessAutoDestroy);
*finishJob = false;
} else {
qemuMigrationParamsReset(vm, VIR_ASYNC_JOB_MIGRATION_IN,
goto cleanup;
if (flags & VIR_MIGRATE_POSTCOPY_RESUME) {
- virCloseCallbacksUnset(driver->closeCallbacks, vm,
- qemuMigrationAnyConnectionClosed);
+ virCloseCallbacksDomainRemove(vm, NULL, qemuMigrationAnyConnectionClosed);
qemuDomainCleanupRemove(vm, qemuProcessCleanupMigrationJob);
} else {
qemuDomainCleanupRemove(vm, qemuMigrationDstPrepareCleanup);
qemuProcessRefreshBalloonState(vm, asyncJob) < 0)
goto cleanup;
- if (flags & VIR_QEMU_PROCESS_START_AUTODESTROY &&
- qemuProcessAutoDestroyAdd(driver, vm, conn) < 0)
- goto cleanup;
+ if (flags & VIR_QEMU_PROCESS_START_AUTODESTROY)
+ virCloseCallbacksDomainAdd(vm, conn, qemuProcessAutoDestroy);
if (!incoming && !snapshot) {
VIR_DEBUG("Setting up transient disk");
virFileDeleteTree(priv->channelTargetDir);
/* Stop autodestroy in case guest is restarted */
- qemuProcessAutoDestroyRemove(driver, vm);
+ virCloseCallbacksDomainRemove(vm, NULL, qemuProcessAutoDestroy);
/* now that we know it's stopped call the hook if present */
if (virHookPresent(VIR_HOOK_DRIVER_QEMU)) {
}
-static void
+void
qemuProcessAutoDestroy(virDomainObj *dom,
virConnectPtr conn)
{
virObjectEventStateQueue(driver->domainEventState, event);
}
-int qemuProcessAutoDestroyAdd(virQEMUDriver *driver,
- virDomainObj *vm,
- virConnectPtr conn)
-{
- VIR_DEBUG("vm=%s, conn=%p", vm->def->name, conn);
- return virCloseCallbacksSet(driver->closeCallbacks, vm, conn,
- qemuProcessAutoDestroy);
-}
-
-int qemuProcessAutoDestroyRemove(virQEMUDriver *driver,
- virDomainObj *vm)
-{
- VIR_DEBUG("vm=%s", vm->def->name);
- return virCloseCallbacksUnset(driver->closeCallbacks, vm,
- qemuProcessAutoDestroy);
-}
-
-bool qemuProcessAutoDestroyActive(virQEMUDriver *driver,
- virDomainObj *vm)
-{
- virCloseCallback cb;
- VIR_DEBUG("vm=%s", vm->def->name);
- cb = virCloseCallbacksGet(driver->closeCallbacks, vm, NULL);
- return cb == qemuProcessAutoDestroy;
-}
-
int
qemuProcessRefreshDisks(virDomainObj *vm,