* qemuDomObjFromDomain:
* @domain: Domain pointer that has to be looked up
*
- * This function looks up @domain and returns the appropriate
- * virDomainObjPtr.
+ * This function looks up @domain and returns the appropriate virDomainObjPtr
+ * that has to be released by calling qemuDomObjEndAPI().
*
- * Returns the domain object which is locked on success, NULL
- * otherwise.
+ * Returns the domain object with incremented reference counter which is locked
+ * on success, NULL otherwise.
*/
static virDomainObjPtr
qemuDomObjFromDomain(virDomainPtr domain)
virQEMUDriverPtr driver = domain->conn->privateData;
char uuidstr[VIR_UUID_STRING_BUFLEN];
- vm = virDomainObjListFindByUUID(driver->domains, domain->uuid);
+ vm = virDomainObjListFindByUUIDRef(driver->domains, domain->uuid);
if (!vm) {
virUUIDFormat(domain->uuid, uuidstr);
virReportError(VIR_ERR_NO_DOMAIN,
return vm;
}
-/* Looks up the domain object from snapshot and unlocks the driver. The
- * returned domain object is locked and the caller is responsible for
- * unlocking it */
+/* Looks up the domain object from snapshot and unlocks the
+ * driver. The returned domain object is locked and ref'd and the
+ * caller must call qemuDomObjEndAPI() on it. */
static virDomainObjPtr
qemuDomObjFromSnapshot(virDomainSnapshotPtr snapshot)
{
flags |= VIR_DOMAIN_START_BYPASS_CACHE;
virObjectLock(vm);
+ virObjectRef(vm);
virResetLastError();
if (vm->autostart &&
!virDomainObjIsActive(vm)) {
err ? err->message : _("unknown error"));
}
- if (!qemuDomainObjEndJob(data->driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(data->driver, vm);
}
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(cfg);
return ret;
}
virDomainObjPtr vm;
virDomainPtr dom = NULL;
- vm = virDomainObjListFindByUUID(driver->domains, uuid);
+ vm = virDomainObjListFindByUUIDRef(driver->domains, uuid);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
if (dom) dom->id = vm->def->id;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return dom;
}
if (dom) dom->id = vm->def->id;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ virObjectUnlock(vm);
return dom;
}
ret = virDomainObjIsActive(obj);
cleanup:
- if (obj)
- virObjectUnlock(obj);
+ qemuDomObjEndAPI(&obj);
return ret;
}
ret = obj->persistent;
cleanup:
- if (obj)
- virObjectUnlock(obj);
+ qemuDomObjEndAPI(&obj);
return ret;
}
ret = obj->updated;
cleanup:
- if (obj)
- virObjectUnlock(obj);
+ qemuDomObjEndAPI(&obj);
return ret;
}
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
NULL)))
goto cleanup;
-
+ virObjectRef(vm);
def = NULL;
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) {
qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
goto cleanup;
}
VIR_NETDEV_VPORT_PROFILE_OP_CREATE,
start_flags) < 0) {
virDomainAuditStart(vm, "booted", false);
- if (qemuDomainObjEndJob(driver, vm))
- qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
+ qemuDomainRemoveInactive(driver, vm);
goto cleanup;
}
if (dom)
dom->id = vm->def->id;
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
virDomainDefFree(def);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (event) {
qemuDomainEventQueue(driver, event);
if (event2)
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (event)
qemuDomainEventQueue(driver, event);
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (event)
qemuDomainEventQueue(driver, event);
virObjectUnref(cfg);
}
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
}
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
priv->fakeReboot = false;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
VIR_DOMAIN_EVENT_STOPPED_DESTROYED);
virDomainAuditStop(vm, "destroyed");
- if (!vm->persistent) {
- if (qemuDomainObjEndJob(driver, vm))
- qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
- }
ret = 0;
-
endjob:
- if (vm && !qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
+ if (ret == 0 && !vm->persistent)
+ qemuDomainRemoveInactive(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (event)
qemuDomainEventQueue(driver, event);
return ret;
ignore_value(VIR_STRDUP(type, vm->def->os.type));
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return type;
}
ret = vm->def->mem.max_balloon;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
qemuDomainObjExitMonitor(driver, vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
qemuDomainObjExitMonitor(driver, vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
err = qemuMonitorGetBalloonInfo(priv->mon, &balloon);
qemuDomainObjExitMonitor(driver, vm);
}
- if (!qemuDomainObjEndJob(driver, vm)) {
- vm = NULL;
- goto cleanup;
- }
+ qemuDomainObjEndJob(driver, vm);
if (err < 0) {
/* We couldn't get current memory allocation but that's not
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
event = virDomainEventLifecycleNewFromObj(vm,
VIR_DOMAIN_EVENT_STOPPED,
VIR_DOMAIN_EVENT_STOPPED_SAVED);
- if (!vm->persistent) {
- if (qemuDomainObjEndAsyncJob(driver, vm) > 0)
- qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
- }
-
endjob:
- if (vm) {
- if (ret != 0) {
- if (was_running && virDomainObjIsActive(vm)) {
- rc = qemuProcessStartCPUs(driver, vm, dom->conn,
- VIR_DOMAIN_RUNNING_SAVE_CANCELED,
- QEMU_ASYNC_JOB_SAVE);
- if (rc < 0) {
- VIR_WARN("Unable to resume guest CPUs after save failure");
- event = virDomainEventLifecycleNewFromObj(vm,
- VIR_DOMAIN_EVENT_SUSPENDED,
- VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR);
- }
+ qemuDomainObjEndAsyncJob(driver, vm);
+ if (ret != 0) {
+ if (was_running && virDomainObjIsActive(vm)) {
+ rc = qemuProcessStartCPUs(driver, vm, dom->conn,
+ VIR_DOMAIN_RUNNING_SAVE_CANCELED,
+ QEMU_ASYNC_JOB_SAVE);
+ if (rc < 0) {
+ VIR_WARN("Unable to resume guest CPUs after save failure");
+ event = virDomainEventLifecycleNewFromObj(vm,
+ VIR_DOMAIN_EVENT_SUSPENDED,
+ VIR_DOMAIN_EVENT_SUSPENDED_API_ERROR);
}
}
- if (qemuDomainObjEndAsyncJob(driver, vm) == 0)
- vm = NULL;
+ } else if (!vm->persistent) {
+ qemuDomainRemoveInactive(driver, vm);
}
cleanup:
VIR_FREE(xml);
if (event)
qemuDomainEventQueue(driver, event);
- if (vm)
- virObjectUnlock(vm);
virObjectUnref(caps);
return ret;
}
ret = qemuDomainSaveInternal(driver, dom, vm, path, compressed,
dxml, flags);
- vm = NULL;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(cfg);
return ret;
}
VIR_INFO("Saving state of domain '%s' to '%s'", vm->def->name, name);
- if ((ret = qemuDomainSaveInternal(driver, dom, vm, name, compressed,
- NULL, flags)) == 0)
+ ret = qemuDomainSaveInternal(driver, dom, vm, name,
+ compressed, NULL, flags);
+ if (ret == 0)
vm->hasManagedSave = true;
- vm = NULL;
-
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
VIR_FREE(name);
virObjectUnref(cfg);
ret = vm->hasManagedSave;
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
cleanup:
VIR_FREE(name);
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
}
}
- if (qemuDomainObjEndAsyncJob(driver, vm) == 0) {
- vm = NULL;
- } else if ((ret == 0) && (flags & VIR_DUMP_CRASH) && !vm->persistent) {
+ qemuDomainObjEndAsyncJob(driver, vm);
+ if (ret == 0 && flags & VIR_DUMP_CRASH && !vm->persistent)
qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
- }
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (event)
qemuDomainEventQueue(driver, event);
return ret;
unlink(tmp);
VIR_FREE(tmp);
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(cfg);
return ret;
}
}
endjob:
- /* Safe to ignore value since ref count was incremented in
- * qemuProcessHandleWatchdog().
- */
- ignore_value(qemuDomainObjEndAsyncJob(driver, vm));
+ qemuDomainObjEndAsyncJob(driver, vm);
cleanup:
virObjectUnref(cfg);
"%s", _("Dump failed"));
endjob:
- /* Safe to ignore value since ref count was incremented in
- * qemuProcessHandleGuestPanic().
- */
- ignore_value(qemuDomainObjEndAsyncJob(driver, vm));
+ qemuDomainObjEndAsyncJob(driver, vm);
cleanup:
VIR_FREE(dumpfile);
devAlias);
endjob:
- /* We had an extra reference to vm before starting a new job so ending the
- * job is guaranteed not to remove the last reference.
- */
- ignore_value(qemuDomainObjEndJob(driver, vm));
+ qemuDomainObjEndJob(driver, vm);
cleanup:
VIR_FREE(devAlias);
}
endjob:
- /* We had an extra reference to vm before starting a new job so ending the
- * job is guaranteed not to remove the last reference.
- */
- ignore_value(qemuDomainObjEndJob(driver, vm));
+ qemuDomainObjEndJob(driver, vm);
cleanup:
virNetDevRxFilterFree(hostFilter);
"channel %s", vm->def->name, devAlias);
endjob:
- /* We had an extra reference to vm before starting a new job so ending the
- * job is guaranteed not to remove the last reference.
- */
- ignore_value(qemuDomainObjEndJob(driver, vm));
+ qemuDomainObjEndJob(driver, vm);
cleanup:
VIR_FREE(devAlias);
break;
}
- if (virObjectUnref(vm))
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
VIR_FREE(processEvent);
}
virFreeError(err);
}
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
VIR_FREE(cpuinfo);
VIR_FREE(mem_mask);
cleanup:
if (cgroup_vcpu)
virCgroupFree(&cgroup_vcpu);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (event)
qemuDomainEventQueue(driver, event);
VIR_FREE(str);
ret = ncpumaps;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
return ret;
}
VIR_FREE(str);
virBitmapFree(pcpumap);
virObjectUnref(caps);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(cfg);
return ret;
}
ret = 1;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
return ret;
}
ret = qemuDomainHelperGetVcpus(vm, info, maxinfo, cpumaps, maplen);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
qemuDomainObjExitAgent(vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
if (ncpuinfo < 0)
goto cleanup;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
VIR_FREE(cpuinfo);
return ret;
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
}
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
NULL)))
goto cleanup;
+ virObjectRef(vm);
def = NULL;
if (flags & VIR_DOMAIN_SAVE_RUNNING)
if (virFileWrapperFdClose(wrapperFd) < 0)
VIR_WARN("Failed to close %s", path);
- if (!qemuDomainObjEndJob(driver, vm)) {
- vm = NULL;
- } else if (ret < 0 && !vm->persistent) {
+ qemuDomainObjEndJob(driver, vm);
+ if (ret < 0 && !vm->persistent)
qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
- }
cleanup:
virDomainDefFree(def);
VIR_FREE(xml);
VIR_FREE(xmlout);
virFileWrapperFdFree(wrapperFd);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virNWFilterUnlockFilterUpdates();
return ret;
}
qemuDomainObjExitMonitor(driver, vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm)) {
- vm = NULL;
- goto cleanup;
- }
+ qemuDomainObjEndJob(driver, vm);
if (err < 0)
goto cleanup;
if (err > 0)
ret = qemuDomainFormatXML(driver, vm, flags);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virNWFilterUnlockFilterUpdates();
return ret;
}
0, &oldDef)))
goto cleanup;
+ virObjectRef(vm);
def = NULL;
if (virDomainHasDiskMirror(vm)) {
virReportError(VIR_ERR_BLOCK_COPY_ACTIVE, "%s",
/* Brand new domain. Remove it */
VIR_INFO("Deleting domain '%s'", vm->def->name);
qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
}
goto cleanup;
}
cleanup:
virDomainDefFree(oldDef);
virDomainDefFree(def);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (event)
qemuDomainEventQueue(driver, event);
virObjectUnref(qemuCaps);
vm->persistent = 0;
} else {
qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
}
ret = 0;
cleanup:
VIR_FREE(name);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (event)
qemuDomainEventQueue(driver, event);
virObjectUnref(cfg);
}
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
virObjectUnref(qemuCaps);
if (dev != dev_copy)
virDomainDeviceDefFree(dev_copy);
virDomainDeviceDefFree(dev);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
virNWFilterUnlockFilterUpdates();
}
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
virObjectUnref(qemuCaps);
if (dev != dev_copy)
virDomainDeviceDefFree(dev_copy);
virDomainDeviceDefFree(dev);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
virNWFilterUnlockFilterUpdates();
}
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
virObjectUnref(qemuCaps);
if (dev != dev_copy)
virDomainDeviceDefFree(dev_copy);
virDomainDeviceDefFree(dev);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
cleanup:
VIR_FREE(configFile);
VIR_FREE(autostartLink);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(cfg);
return ret;
}
ignore_value(VIR_STRDUP(ret, "posix"));
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(cfg);
return ret;
}
}
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
ret = 0;
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
virBitmapFree(nodeset);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
cleanup:
VIR_FREE(nodeset);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
return ret;
}
cleanup:
virDomainDefFree(vmdef);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (eventNparams)
virTypedParamsFree(eventParams, eventNparams);
virObjectUnref(caps);
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
VIR_FREE(device);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
qemuDomainObjExitMonitor(driver, vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
*nparams = tmp;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
_("invalid path, '%s' is not a known interface"), path);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
virNetDevBandwidthFree(bandwidth);
virNetDevBandwidthFree(newBandwidth);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
return ret;
}
}
}
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
cleanup:
VIR_FORCE_CLOSE(fd);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
VIR_FORCE_CLOSE(fd);
if (tmp)
unlink(tmp);
VIR_FREE(tmp);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(cfg);
return ret;
}
}
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
/* If we failed to get data from a domain because it's inactive and
* it's not a persistent domain, then force failure.
_("domain is not running"));
ret = -1;
}
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(cfg);
return ret;
}
goto cleanup;
if (virDomainMigratePerformEnsureACL(dom->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
goto cleanup;
}
goto cleanup;
}
+ virObjectRef(vm);
/* Do not use cookies in v2 protocol, since the cookie
* length was not sufficiently large, causing failures
* migrating between old & new libvirtd
return NULL;
if (virDomainMigrateBegin3EnsureACL(domain->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return NULL;
}
return NULL;
if (virDomainMigrateBegin3ParamsEnsureACL(domain->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return NULL;
}
return -1;
if (virDomainMigratePerform3EnsureACL(dom->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return -1;
}
return -1;
if (virDomainMigratePerform3ParamsEnsureACL(dom->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return -1;
}
return NULL;
}
+ virObjectRef(vm);
+
return qemuMigrationFinish(driver, dconn, vm,
cookiein, cookieinlen,
cookieout, cookieoutlen,
return NULL;
}
+ virObjectRef(vm);
+
return qemuMigrationFinish(driver, dconn, vm,
cookiein, cookieinlen,
cookieout, cookieoutlen,
return -1;
if (virDomainMigrateConfirm3EnsureACL(domain->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return -1;
}
return -1;
if (virDomainMigrateConfirm3ParamsEnsureACL(domain->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return -1;
}
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
qemuDomainObjExitMonitor(driver, vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
qemuDomainObjExitMonitor(driver, vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
qemuDomainObjExitMonitor(driver, vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
qemuDomainObjExitMonitor(driver, vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
priv->migMaxBandwidth = bandwidth;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
} else {
priv->migMaxBandwidth = bandwidth;
ret = 0;
}
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 0;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
virDomainSnapshotObjListRemove(vm->snapshots, snap);
}
- if (!qemuDomainObjEndAsyncJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndAsyncJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virDomainSnapshotDefFree(def);
VIR_FREE(xml);
virObjectUnref(caps);
flags);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return n;
}
n = virDomainSnapshotObjListNum(vm->snapshots, NULL, flags);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return n;
}
n = virDomainListSnapshots(vm->snapshots, NULL, domain, snaps, flags);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return n;
}
flags);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return n;
}
n = virDomainSnapshotObjListNum(vm->snapshots, snap, flags);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return n;
}
flags);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return n;
}
snapshot = virGetDomainSnapshot(domain, snap->def->name);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return snapshot;
}
ret = (vm->current_snapshot != NULL);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
parent = virGetDomainSnapshot(snapshot->domain, snap->def->parent);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return parent;
}
snapshot = virGetDomainSnapshot(domain, vm->current_snapshot->def->name);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return snapshot;
}
xml = virDomainSnapshotDefFormat(uuidstr, snap->def, flags, 0);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return xml;
}
STREQ(snapshot->name, vm->current_snapshot->def->name));
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 1;
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
if (qemuDomainSnapshotRevertInactive(driver, vm, snap) < 0) {
if (!vm->persistent) {
- if (qemuDomainObjEndJob(driver, vm))
- qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
+ qemuDomainRemoveInactive(driver, vm);
goto cleanup;
}
goto endjob;
virDomainAuditStart(vm, "from-snapshot", rc >= 0);
if (rc < 0) {
if (!vm->persistent) {
- if (qemuDomainObjEndJob(driver, vm))
- qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
+ qemuDomainRemoveInactive(driver, vm);
goto cleanup;
}
goto endjob;
ret = 0;
endjob:
- if (vm && !qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm && ret == 0) {
+ if (ret == 0) {
if (qemuDomainSnapshotWriteMetadata(vm, snap,
cfg->snapshotDir) < 0)
ret = -1;
if (event2)
qemuDomainEventQueue(driver, event2);
}
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
virNWFilterUnlockFilterUpdates();
}
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(cfg);
return ret;
}
qemuDomainObjExitMonitor(driver, vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
NULL)))
goto cleanup;
+ virObjectRef(vm);
def = NULL;
if (qemuDomainObjBeginJob(driver, vm, QEMU_JOB_MODIFY) < 0) {
qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
goto cleanup;
}
if (qemuProcessAttach(conn, driver, vm, pid,
pidfile, monConfig, monJSON) < 0) {
- if (qemuDomainObjEndJob(driver, vm))
- qemuDomainRemoveInactive(driver, vm);
- vm = NULL;
monConfig = NULL;
+ qemuDomainObjEndJob(driver, vm);
+ qemuDomainRemoveInactive(driver, vm);
goto cleanup;
}
if (dom)
dom->id = vm->def->id;
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
virDomainDefFree(def);
virDomainChrSourceDefFree(monConfig);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
VIR_FREE(pidfile);
virObjectUnref(caps);
virObjectUnref(qemuCaps);
}
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
}
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
}
endjob:
- if (!qemuDomainObjEndJob(driver, vm)) {
- vm = NULL;
- goto cleanup;
- }
+ qemuDomainObjEndJob(driver, vm);
cleanup:
virObjectUnref(cfg);
VIR_FREE(basePath);
VIR_FREE(backingPath);
VIR_FREE(device);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (event)
qemuDomainEventQueue(driver, event);
if (event2)
return -1;
if (virDomainBlockJobAbortEnsureACL(dom->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return -1;
}
return -1;
if (virDomainGetBlockJobInfoEnsureACL(dom->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return -1;
}
virObjectUnref(cfg);
}
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
return -1;
if (virDomainBlockJobSetSpeedEnsureACL(dom->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return -1;
}
/* bandwidth in bytes/s. Caller must lock vm beforehand, and not
- * access it afterwards; likewise, caller must not access mirror
- * afterwards. */
+ * access mirror afterwards. */
static int
qemuDomainBlockCopyCommon(virDomainObjPtr vm,
virConnectPtr conn,
if (need_unlink && unlink(mirror->path))
VIR_WARN("unable to unlink just-created %s", mirror->path);
virStorageSourceFree(mirror);
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
VIR_FREE(device);
- if (vm)
- virObjectUnlock(vm);
virObjectUnref(cfg);
return ret;
}
VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT);
ret = qemuDomainBlockCopyCommon(vm, dom->conn, path, dest,
bandwidth, 0, 0, flags, true);
- vm = NULL;
dest = NULL;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virStorageSourceFree(dest);
return ret;
}
ret = qemuDomainBlockCopyCommon(vm, dom->conn, disk, dest, bandwidth,
granularity, buf_size, flags, false);
- vm = NULL;
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
return -1;
if (virDomainBlockPullEnsureACL(dom->conn, vm->def) < 0) {
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return -1;
}
VIR_DISK_CHAIN_READ_ONLY);
}
virStorageSourceFree(mirror);
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
VIR_FREE(topPath);
VIR_FREE(basePath);
VIR_FREE(backingPath);
VIR_FREE(device);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = qemuMonitorOpenGraphics(priv->mon, protocol, fd, "graphicsfd",
(flags & VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH) != 0);
qemuDomainObjExitMonitor(driver, vm);
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = qemuMonitorOpenGraphics(priv->mon, protocol, pair[1], "graphicsfd",
(flags & VIR_DOMAIN_OPEN_GRAPHICS_SKIPAUTH));
qemuDomainObjExitMonitor(driver, vm);
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
if (ret < 0)
goto cleanup;
cleanup:
VIR_FORCE_CLOSE(pair[0]);
VIR_FORCE_CLOSE(pair[1]);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
}
endjob:
-
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
VIR_FREE(device);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
if (eventNparams)
virTypedParamsFree(eventParams, eventNparams);
virObjectUnref(caps);
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
VIR_FREE(device);
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
return ret;
}
ret = n;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virHashFree(table);
if (ret < 0) {
for (i = 0; i < n; i++)
cfg->configDir, flags);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
virObjectUnref(cfg);
return ret;
ret = virDomainObjGetMetadata(vm, type, uri, caps, driver->xmlopt, flags);
cleanup:
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
virObjectUnref(caps);
return ret;
}
ret = virCgroupGetPercpuStats(priv->cgroup, params, nparams,
start_cpu, ncpus, priv->nvcpupids);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
qemuDomainObjExitAgent(vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
qemuDomainObjExitMonitor(driver, vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
VIR_FREE(result);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return result;
}
qemuDomainObjExitAgent(vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = 0;
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = qemuDomainSnapshotFSFreeze(driver, vm, mountpoints, nmountpoints);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
ret = qemuDomainSnapshotFSThaw(driver, vm, true);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}
if (doms != domlist &&
!virConnectGetAllDomainStatsCheckACL(conn, dom->def)) {
- virObjectUnlock(dom);
- dom = NULL;
+ qemuDomObjEndAPI(&dom);
continue;
}
if (tmp)
tmpstats[nstats++] = tmp;
- if (HAVE_JOB(domflags)) {
- domflags = 0;
- if (!qemuDomainObjEndJob(driver, dom)) {
- dom = NULL;
- continue;
- }
- }
+ if (HAVE_JOB(domflags))
+ qemuDomainObjEndJob(driver, dom);
- virObjectUnlock(dom);
- dom = NULL;
+ qemuDomObjEndAPI(&dom);
}
*retStats = tmpstats;
endjob:
if (HAVE_JOB(domflags) && dom)
- if (!qemuDomainObjEndJob(driver, dom))
- dom = NULL;
+ qemuDomainObjEndJob(driver, dom);
cleanup:
- if (dom)
- virObjectUnlock(dom);
+ qemuDomObjEndAPI(&dom);
virDomainStatsRecordListFree(tmpstats);
virDomainListFree(domlist);
qemuDomainObjExitAgent(vm);
endjob:
- if (!qemuDomainObjEndJob(driver, vm))
- vm = NULL;
+ qemuDomainObjEndJob(driver, vm);
cleanup:
- if (vm)
- virObjectUnlock(vm);
+ qemuDomObjEndAPI(&vm);
return ret;
}