提交 f41be296 编写于 作者: M Michal Privoznik

qemu: Move vm->persistent check into qemuDomainRemoveInactive

So far we have the following pattern occurring over and over
again:

  if (!vm->persistent)
      qemuDomainRemoveInactive(driver, vm);

It's safe to put the check into the function and save some LoC.
Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
上级 c99b8cec
...@@ -2619,7 +2619,14 @@ qemuDomainRemoveInactive(virQEMUDriverPtr driver, ...@@ -2619,7 +2619,14 @@ qemuDomainRemoveInactive(virQEMUDriverPtr driver,
{ {
bool haveJob = true; bool haveJob = true;
char *snapDir; char *snapDir;
virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver); virQEMUDriverConfigPtr cfg;
if (vm->persistent) {
/* Short-circuit, we don't want to remove a persistent domain */
return;
}
cfg = virQEMUDriverGetConfig(driver);
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0)
haveJob = false; haveJob = false;
......
...@@ -1753,8 +1753,7 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn, ...@@ -1753,8 +1753,7 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn,
def = NULL; def = NULL;
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) { if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) {
if (!vm->persistent) qemuDomainRemoveInactive(driver, vm);
qemuDomainRemoveInactive(driver, vm);
goto cleanup; goto cleanup;
} }
...@@ -1764,8 +1763,7 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn, ...@@ -1764,8 +1763,7 @@ static virDomainPtr qemuDomainCreateXML(virConnectPtr conn,
start_flags) < 0) { start_flags) < 0) {
virDomainAuditStart(vm, "booted", false); virDomainAuditStart(vm, "booted", false);
qemuDomainObjEndJob(driver, vm); qemuDomainObjEndJob(driver, vm);
if (!vm->persistent) qemuDomainRemoveInactive(driver, vm);
qemuDomainRemoveInactive(driver, vm);
goto cleanup; goto cleanup;
} }
...@@ -2250,7 +2248,7 @@ qemuDomainDestroyFlags(virDomainPtr dom, ...@@ -2250,7 +2248,7 @@ qemuDomainDestroyFlags(virDomainPtr dom,
ret = 0; ret = 0;
endjob: endjob:
qemuDomainObjEndJob(driver, vm); qemuDomainObjEndJob(driver, vm);
if (ret == 0 && !vm->persistent) if (ret == 0)
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
cleanup: cleanup:
...@@ -3273,7 +3271,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, virDomainPtr dom, ...@@ -3273,7 +3271,7 @@ qemuDomainSaveInternal(virQEMUDriverPtr driver, virDomainPtr dom,
} }
} }
qemuDomainObjEndAsyncJob(driver, vm); qemuDomainObjEndAsyncJob(driver, vm);
if (ret == 0 && !vm->persistent) if (ret == 0)
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
cleanup: cleanup:
...@@ -3774,7 +3772,7 @@ qemuDomainCoreDumpWithFormat(virDomainPtr dom, ...@@ -3774,7 +3772,7 @@ qemuDomainCoreDumpWithFormat(virDomainPtr dom,
} }
qemuDomainObjEndAsyncJob(driver, vm); qemuDomainObjEndAsyncJob(driver, vm);
if (ret == 0 && flags & VIR_DUMP_CRASH && !vm->persistent) if (ret == 0 && flags & VIR_DUMP_CRASH)
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
cleanup: cleanup:
...@@ -4054,8 +4052,7 @@ processGuestPanicEvent(virQEMUDriverPtr driver, ...@@ -4054,8 +4052,7 @@ processGuestPanicEvent(virQEMUDriverPtr driver,
virDomainAuditStop(vm, "destroyed"); virDomainAuditStop(vm, "destroyed");
if (!vm->persistent) qemuDomainRemoveInactive(driver, vm);
qemuDomainRemoveInactive(driver, vm);
break; break;
case VIR_DOMAIN_LIFECYCLE_CRASH_COREDUMP_RESTART: case VIR_DOMAIN_LIFECYCLE_CRASH_COREDUMP_RESTART:
...@@ -6831,7 +6828,7 @@ qemuDomainRestoreFlags(virConnectPtr conn, ...@@ -6831,7 +6828,7 @@ qemuDomainRestoreFlags(virConnectPtr conn,
VIR_WARN("Failed to close %s", path); VIR_WARN("Failed to close %s", path);
qemuDomainObjEndJob(driver, vm); qemuDomainObjEndJob(driver, vm);
if (ret < 0 && !vm->persistent) if (ret < 0)
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
cleanup: cleanup:
...@@ -7526,6 +7523,7 @@ static virDomainPtr qemuDomainDefineXMLFlags(virConnectPtr conn, const char *xml ...@@ -7526,6 +7523,7 @@ static virDomainPtr qemuDomainDefineXMLFlags(virConnectPtr conn, const char *xml
} else { } else {
/* Brand new domain. Remove it */ /* Brand new domain. Remove it */
VIR_INFO("Deleting domain '%s'", vm->def->name); VIR_INFO("Deleting domain '%s'", vm->def->name);
vm->persistent = 0;
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
} }
goto cleanup; goto cleanup;
...@@ -7651,11 +7649,9 @@ qemuDomainUndefineFlags(virDomainPtr dom, ...@@ -7651,11 +7649,9 @@ qemuDomainUndefineFlags(virDomainPtr dom,
* domainDestroy and domainShutdown will take care of removing the * domainDestroy and domainShutdown will take care of removing the
* domain obj from the hash table. * domain obj from the hash table.
*/ */
if (virDomainObjIsActive(vm)) { vm->persistent = 0;
vm->persistent = 0; if (!virDomainObjIsActive(vm))
} else {
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
}
ret = 0; ret = 0;
...@@ -15550,12 +15546,9 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, ...@@ -15550,12 +15546,9 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
} }
if (qemuDomainSnapshotRevertInactive(driver, vm, snap) < 0) { if (qemuDomainSnapshotRevertInactive(driver, vm, snap) < 0) {
if (!vm->persistent) { qemuDomainObjEndJob(driver, vm);
qemuDomainObjEndJob(driver, vm); qemuDomainRemoveInactive(driver, vm);
qemuDomainRemoveInactive(driver, vm); goto cleanup;
goto cleanup;
}
goto endjob;
} }
if (config) if (config)
virDomainObjAssignDef(vm, config, false, NULL); virDomainObjAssignDef(vm, config, false, NULL);
...@@ -15575,12 +15568,9 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot, ...@@ -15575,12 +15568,9 @@ qemuDomainRevertToSnapshot(virDomainSnapshotPtr snapshot,
start_flags); start_flags);
virDomainAuditStart(vm, "from-snapshot", rc >= 0); virDomainAuditStart(vm, "from-snapshot", rc >= 0);
if (rc < 0) { if (rc < 0) {
if (!vm->persistent) { qemuDomainObjEndJob(driver, vm);
qemuDomainObjEndJob(driver, vm); qemuDomainRemoveInactive(driver, vm);
qemuDomainRemoveInactive(driver, vm); goto cleanup;
goto cleanup;
}
goto endjob;
} }
detail = VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT; detail = VIR_DOMAIN_EVENT_STARTED_FROM_SNAPSHOT;
event = virDomainEventLifecycleNewFromObj(vm, event = virDomainEventLifecycleNewFromObj(vm,
......
...@@ -3483,8 +3483,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver, ...@@ -3483,8 +3483,7 @@ qemuMigrationPrepareAny(virQEMUDriverPtr driver,
VIR_FREE(priv->origname); VIR_FREE(priv->origname);
virPortAllocatorRelease(driver->migrationPorts, priv->nbdPort); virPortAllocatorRelease(driver->migrationPorts, priv->nbdPort);
priv->nbdPort = 0; priv->nbdPort = 0;
if (!vm->persistent) qemuDomainRemoveInactive(driver, vm);
qemuDomainRemoveInactive(driver, vm);
} }
virDomainObjEndAPI(&vm); virDomainObjEndAPI(&vm);
qemuDomainEventQueue(driver, event); qemuDomainEventQueue(driver, event);
...@@ -3873,8 +3872,7 @@ qemuMigrationConfirm(virConnectPtr conn, ...@@ -3873,8 +3872,7 @@ qemuMigrationConfirm(virConnectPtr conn,
flags, cancelled); flags, cancelled);
qemuMigrationJobFinish(driver, vm); qemuMigrationJobFinish(driver, vm);
if (!virDomainObjIsActive(vm) && if (!virDomainObjIsActive(vm)) {
(!vm->persistent || (flags & VIR_MIGRATE_UNDEFINE_SOURCE))) {
if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) if (flags & VIR_MIGRATE_UNDEFINE_SOURCE)
virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm);
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
...@@ -5357,9 +5355,7 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver, ...@@ -5357,9 +5355,7 @@ qemuMigrationPerformJob(virQEMUDriverPtr driver,
} }
qemuMigrationJobFinish(driver, vm); qemuMigrationJobFinish(driver, vm);
if (!virDomainObjIsActive(vm) && if (!virDomainObjIsActive(vm) && ret == 0) {
(!vm->persistent ||
(ret == 0 && (flags & VIR_MIGRATE_UNDEFINE_SOURCE)))) {
if (flags & VIR_MIGRATE_UNDEFINE_SOURCE) if (flags & VIR_MIGRATE_UNDEFINE_SOURCE)
virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm); virDomainDeleteConfig(cfg->configDir, cfg->autostartDir, vm);
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
...@@ -5435,7 +5431,7 @@ qemuMigrationPerformPhase(virQEMUDriverPtr driver, ...@@ -5435,7 +5431,7 @@ qemuMigrationPerformPhase(virQEMUDriverPtr driver,
qemuMigrationJobFinish(driver, vm); qemuMigrationJobFinish(driver, vm);
else else
qemuMigrationJobContinue(vm); qemuMigrationJobContinue(vm);
if (!virDomainObjIsActive(vm) && !vm->persistent) if (!virDomainObjIsActive(vm))
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
cleanup: cleanup:
...@@ -5804,7 +5800,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver, ...@@ -5804,7 +5800,7 @@ qemuMigrationFinish(virQEMUDriverPtr driver,
VIR_WARN("Unable to encode migration cookie"); VIR_WARN("Unable to encode migration cookie");
qemuMigrationJobFinish(driver, vm); qemuMigrationJobFinish(driver, vm);
if (!vm->persistent && !virDomainObjIsActive(vm)) if (!virDomainObjIsActive(vm))
qemuDomainRemoveInactive(driver, vm); qemuDomainRemoveInactive(driver, vm);
cleanup: cleanup:
......
...@@ -323,8 +323,7 @@ qemuProcessHandleMonitorEOF(qemuMonitorPtr mon ATTRIBUTE_UNUSED, ...@@ -323,8 +323,7 @@ qemuProcessHandleMonitorEOF(qemuMonitorPtr mon ATTRIBUTE_UNUSED,
qemuProcessStop(driver, vm, stopReason, stopFlags); qemuProcessStop(driver, vm, stopReason, stopFlags);
virDomainAuditStop(vm, auditReason); virDomainAuditStop(vm, auditReason);
if (!vm->persistent) qemuDomainRemoveInactive(driver, vm);
qemuDomainRemoveInactive(driver, vm);
cleanup: cleanup:
virObjectUnlock(vm); virObjectUnlock(vm);
...@@ -3898,8 +3897,7 @@ qemuProcessReconnect(void *opaque) ...@@ -3898,8 +3897,7 @@ qemuProcessReconnect(void *opaque)
qemuProcessStop(driver, obj, state, stopFlags); qemuProcessStop(driver, obj, state, stopFlags);
} }
if (!obj->persistent) qemuDomainRemoveInactive(driver, obj);
qemuDomainRemoveInactive(driver, obj);
cleanup: cleanup:
virDomainObjEndAPI(&obj); virDomainObjEndAPI(&obj);
...@@ -3943,8 +3941,7 @@ qemuProcessReconnectHelper(virDomainObjPtr obj, ...@@ -3943,8 +3941,7 @@ qemuProcessReconnectHelper(virDomainObjPtr obj,
"might be incomplete")); "might be incomplete"));
/* We can't spawn a thread and thus connect to monitor. Kill qemu. */ /* We can't spawn a thread and thus connect to monitor. Kill qemu. */
qemuProcessStop(src->driver, obj, VIR_DOMAIN_SHUTOFF_FAILED, 0); qemuProcessStop(src->driver, obj, VIR_DOMAIN_SHUTOFF_FAILED, 0);
if (!obj->persistent) qemuDomainRemoveInactive(src->driver, obj);
qemuDomainRemoveInactive(src->driver, obj);
virDomainObjEndAPI(&obj); virDomainObjEndAPI(&obj);
virObjectUnref(data->conn); virObjectUnref(data->conn);
...@@ -5750,8 +5747,7 @@ qemuProcessAutoDestroy(virDomainObjPtr dom, ...@@ -5750,8 +5747,7 @@ qemuProcessAutoDestroy(virDomainObjPtr dom,
qemuDomainObjEndJob(driver, dom); qemuDomainObjEndJob(driver, dom);
if (!dom->persistent) qemuDomainRemoveInactive(driver, dom);
qemuDomainRemoveInactive(driver, dom);
qemuDomainEventQueue(driver, event); qemuDomainEventQueue(driver, event);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册