libxlVmStart(libxlDriverPrivatePtr driver, virDomainObjPtr vm,
bool start_paused, int restore_fd);
-/* driver must be locked before calling */
static void
libxlDomainEventQueue(libxlDriverPrivatePtr driver, virDomainEventPtr event)
{
return ret;
}
-/* This internal function expects the driver lock to already be held on
- * entry. */
-static int ATTRIBUTE_NONNULL(3) ATTRIBUTE_NONNULL(4)
-libxlSaveImageOpen(libxlDriverPrivatePtr driver, const char *from,
- virDomainDefPtr *ret_def, libxlSavefileHeaderPtr ret_hdr)
+/*
+ * This internal function expects the driver lock to already be held on
+ * entry.
+ */
+static int ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5)
+libxlSaveImageOpen(libxlDriverPrivatePtr driver,
+ libxlDriverConfigPtr cfg,
+ const char *from,
+ virDomainDefPtr *ret_def,
+ libxlSavefileHeaderPtr ret_hdr)
{
int fd;
virDomainDefPtr def = NULL;
libxlSavefileHeader hdr;
char *xml = NULL;
- libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
if ((fd = virFileOpenAs(from, O_RDONLY, 0, -1, -1, 0)) < 0) {
virReportSystemError(-fd,
goto error;
VIR_FREE(xml);
- virObjectUnref(cfg);
*ret_def = def;
*ret_hdr = hdr;
error:
VIR_FREE(xml);
- virObjectUnref(cfg);
virDomainDefFree(def);
VIR_FORCE_CLOSE(fd);
return -1;
if (xl_reason == LIBXL_SHUTDOWN_REASON_SUSPEND)
goto cleanup;
- libxlDriverLock(driver);
vm = virDomainObjListFindByID(driver->domains, event->domid);
- libxlDriverUnlock(driver);
-
if (!vm)
goto cleanup;
cleanup:
if (vm)
virObjectUnlock(vm);
- if (dom_event) {
- libxlDriverLock(driver);
+ if (dom_event)
libxlDomainEventQueue(driver, dom_event);
- libxlDriverUnlock(driver);
- }
/* Cast away any const */
libxl_event_free(priv->ctx, (libxl_event *)event);
}
if (virFileExists(managed_save_path)) {
- managed_save_fd = libxlSaveImageOpen(driver, managed_save_path,
+ managed_save_fd = libxlSaveImageOpen(driver, cfg,
+ managed_save_path,
&def, &hdr);
if (managed_save_fd < 0)
goto error;
VIR_FREE(libxl_driver);
return -1;
}
- libxlDriverLock(libxl_driver);
/* Allocate bitmap for vnc port reservation */
if (!(libxl_driver->reservedVNCPorts =
virDomainObjListForEach(libxl_driver->domains, libxlDomainManagedSaveLoad,
libxl_driver);
- libxlDriverUnlock(libxl_driver);
-
return 0;
error:
- if (libxl_driver)
- libxlDriverUnlock(libxl_driver);
libxlStateCleanup();
return -1;
}
if (!libxl_driver)
return;
- libxlDriverLock(libxl_driver);
virDomainObjListForEach(libxl_driver->domains, libxlAutostartDomain,
libxl_driver);
- libxlDriverUnlock(libxl_driver);
}
static int
if (!libxl_driver)
return 0;
- libxlDriverLock(libxl_driver);
cfg = libxlDriverConfigGet(libxl_driver);
virDomainObjListLoadAllConfigs(libxl_driver->domains,
libxl_driver);
virObjectUnref(cfg);
- libxlDriverUnlock(libxl_driver);
-
return 0;
}
if (virConnectGetVersionEnsureACL(conn) < 0)
return 0;
- libxlDriverLock(driver);
cfg = libxlDriverConfigGet(driver);
*version = cfg->version;
virObjectUnref(cfg);
- libxlDriverUnlock(driver);
return 0;
}
if (virConnectGetCapabilitiesEnsureACL(conn) < 0)
return NULL;
- libxlDriverLock(driver);
cfg = libxlDriverConfigGet(driver);
if ((xml = virCapabilitiesFormatXML(cfg->caps)) == NULL)
virReportOOMError();
- libxlDriverUnlock(driver);
virObjectUnref(cfg);
return xml;
if (virConnectListDomainsEnsureACL(conn) < 0)
return -1;
- libxlDriverLock(driver);
n = virDomainObjListGetActiveIDs(driver->domains, ids, nids,
virConnectListDomainsCheckACL, conn);
- libxlDriverUnlock(driver);
return n;
}
if (virConnectNumOfDomainsEnsureACL(conn) < 0)
return -1;
- libxlDriverLock(driver);
n = virDomainObjListNumOfDomains(driver->domains, true,
virConnectNumOfDomainsCheckACL, conn);
- libxlDriverUnlock(driver);
return n;
}
virCheckFlags(VIR_DOMAIN_START_PAUSED, NULL);
- libxlDriverLock(driver);
if (!(def = virDomainDefParseString(xml, cfg->caps, driver->xmlopt,
1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE)))
virDomainDefFree(def);
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
virObjectUnref(cfg);
return dom;
}
virDomainObjPtr vm;
virDomainPtr dom = NULL;
- libxlDriverLock(driver);
vm = virDomainObjListFindByID(driver->domains, id);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, NULL);
goto cleanup;
virDomainObjPtr vm;
virDomainPtr dom = NULL;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, NULL);
goto cleanup;
virDomainObjPtr vm;
virDomainPtr dom = NULL;
- libxlDriverLock(driver);
vm = virDomainObjListFindByName(driver->domains, name);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, NULL);
goto cleanup;
virDomainEventPtr event = NULL;
int ret = -1;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(dom->uuid, uuidstr);
cleanup:
if (vm)
virObjectUnlock(vm);
- if (event) {
- libxlDriverLock(driver);
+ if (event)
libxlDomainEventQueue(driver, event);
- libxlDriverUnlock(driver);
- }
virObjectUnref(cfg);
return ret;
}
virDomainEventPtr event = NULL;
int ret = -1;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(dom->uuid, uuidstr);
cleanup:
if (vm)
virObjectUnlock(vm);
- if (event) {
- libxlDriverLock(driver);
+ if (event)
libxlDomainEventQueue(driver, event);
- libxlDriverUnlock(driver);
- }
virObjectUnref(cfg);
return ret;
}
virCheckFlags(0, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
cleanup:
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
return ret;
}
virCheckFlags(0, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
cleanup:
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
return ret;
}
virCheckFlags(0, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virObjectUnlock(vm);
if (event)
libxlDomainEventQueue(driver, event);
- libxlDriverUnlock(driver);
return ret;
}
virDomainObjPtr vm;
char *type = NULL;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(dom->uuid, uuidstr);
virDomainObjPtr vm;
unsigned long long ret = 0;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
VIR_DOMAIN_MEM_CONFIG |
VIR_DOMAIN_MEM_MAXIMUM, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
libxlDomainObjPrivatePtr priv;
int ret = -1;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s",
_("no domain with matching uuid"));
virCheckFlags(0, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s",
_("no domain with matching uuid"));
return -1;
}
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
-
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(dom->uuid, uuidstr);
cleanup:
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
return ret;
}
const char *dxml, unsigned int flags)
{
libxlDriverPrivatePtr driver = conn->privateData;
+ libxlDriverConfigPtr cfg = libxlDriverConfigGet(driver);
virDomainObjPtr vm = NULL;
virDomainDefPtr def = NULL;
libxlSavefileHeader hdr;
return -1;
}
+ /* Lock the driver until domain def is read from the saved
+ image and a virDomainObj is created and locked.
+ */
libxlDriverLock(driver);
- fd = libxlSaveImageOpen(driver, from, &def, &hdr);
+ fd = libxlSaveImageOpen(driver, cfg, from, &def, &hdr);
if (fd < 0)
- goto cleanup;
+ goto cleanup_unlock;
if (virDomainRestoreFlagsEnsureACL(conn, def) < 0)
- goto cleanup;
+ goto cleanup_unlock;
if (!(vm = virDomainObjListAdd(driver->domains, def,
driver->xmlopt,
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
VIR_DOMAIN_OBJ_LIST_ADD_CHECK_LIVE,
NULL)))
- goto cleanup;
+ goto cleanup_unlock;
+ libxlDriverUnlock(driver);
def = NULL;
ret = libxlVmStart(driver, vm, (flags & VIR_DOMAIN_SAVE_PAUSED) != 0, fd);
virDomainDefFree(def);
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
+ virObjectUnref(cfg);
return ret;
+
+cleanup_unlock:
+ libxlDriverUnlock(driver);
+ goto cleanup;
}
static int
virCheckFlags(VIR_DUMP_LIVE | VIR_DUMP_CRASH, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(dom->uuid, uuidstr);
goto cleanup_unpause;
}
- libxlDriverLock(driver);
if (flags & VIR_DUMP_CRASH) {
if (libxlVmReap(driver, vm, VIR_DOMAIN_SHUTOFF_CRASHED) != 0) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Failed to destroy domain '%d'"), dom->id);
- goto cleanup_unlock;
+ goto cleanup_unpause;
}
event = virDomainEventNewFromObj(vm, VIR_DOMAIN_EVENT_STOPPED,
ret = 0;
-cleanup_unlock:
- libxlDriverUnlock(driver);
cleanup_unpause:
if (virDomainObjIsActive(vm) && paused) {
if (libxl_domain_unpause(priv->ctx, dom->id) != 0) {
cleanup:
if (vm)
virObjectUnlock(vm);
- if (event) {
- libxlDriverLock(driver);
+ if (event)
libxlDomainEventQueue(driver, event);
- libxlDriverUnlock(driver);
- }
return ret;
}
virCheckFlags(0, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
cleanup:
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
VIR_FREE(name);
return ret;
}
virCheckFlags(0, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
cleanup:
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
return ret;
}
virCheckFlags(0, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
VIR_FREE(name);
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
return ret;
}
return -1;
}
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
VIR_DOMAIN_VCPU_CONFIG |
VIR_DOMAIN_VCPU_MAXIMUM, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
int ret = -1;
libxl_bitmap map;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
size_t i;
unsigned char *cpumap;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
/* Flags checked by virDomainDefFormat */
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s",
_("no domain with matching uuid"));
if (virConnectListDefinedDomainsEnsureACL(conn) < 0)
return -1;
- libxlDriverLock(driver);
n = virDomainObjListGetInactiveNames(driver->domains, names, nnames,
virConnectListDefinedDomainsCheckACL, conn);
- libxlDriverUnlock(driver);
return n;
}
if (virConnectNumOfDefinedDomainsEnsureACL(conn) < 0)
return -1;
- libxlDriverLock(driver);
n = virDomainObjListNumOfDomains(driver->domains, false,
virConnectNumOfDefinedDomainsCheckACL,
conn);
- libxlDriverUnlock(driver);
-
return n;
}
virCheckFlags(VIR_DOMAIN_START_PAUSED, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
cleanup:
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
return ret;
}
virDomainEventPtr event = NULL;
virDomainDefPtr oldDef = NULL;
+ /* Lock the driver until the virDomainObj is created and locked */
libxlDriverLock(driver);
if (!(def = virDomainDefParseString(xml, cfg->caps, driver->xmlopt,
1 << VIR_DOMAIN_VIRT_XEN,
VIR_DOMAIN_XML_INACTIVE)))
- goto cleanup;
+ goto cleanup_unlock;
if (virDomainDefineXMLEnsureACL(conn, def) < 0)
- goto cleanup;
+ goto cleanup_unlock;
if (!(vm = virDomainObjListAdd(driver->domains, def,
driver->xmlopt,
0,
&oldDef)))
- goto cleanup;
+ goto cleanup_unlock;
+
def = NULL;
vm->persistent = 1;
+ libxlDriverUnlock(driver);
if (virDomainSaveConfig(cfg->configDir,
vm->newDef ? vm->newDef : vm->def) < 0) {
virObjectUnlock(vm);
if (event)
libxlDomainEventQueue(driver, event);
- libxlDriverUnlock(driver);
virObjectUnref(cfg);
return dom;
+
+cleanup_unlock:
+ libxlDriverUnlock(driver);
+ goto cleanup;
}
static int
virCheckFlags(VIR_DOMAIN_UNDEFINE_MANAGED_SAVE, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
-
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virObjectUnlock(vm);
if (event)
libxlDomainEventQueue(driver, event);
- libxlDriverUnlock(driver);
virObjectUnref(cfg);
return ret;
}
virCheckFlags(VIR_DOMAIN_DEVICE_MODIFY_LIVE |
VIR_DOMAIN_DEVICE_MODIFY_CONFIG, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
virDomainDeviceDefFree(dev);
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
virObjectUnref(cfg);
return ret;
}
virCheckFlags(VIR_DOMAIN_DEVICE_MODIFY_LIVE |
VIR_DOMAIN_DEVICE_MODIFY_CONFIG, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
virDomainDeviceDefFree(dev);
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
virObjectUnref(cfg);
return ret;
}
virCheckFlags(VIR_DOMAIN_DEVICE_MODIFY_LIVE |
VIR_DOMAIN_DEVICE_MODIFY_CONFIG, -1);
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
virDomainDeviceDefFree(dev);
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
virObjectUnref(cfg);
return ret;
}
if (virConnectDomainEventRegisterEnsureACL(conn) < 0)
return -1;
- libxlDriverLock(driver);
ret = virDomainEventStateRegister(conn,
driver->domainEventState,
callback, opaque, freecb);
- libxlDriverUnlock(driver);
return ret;
}
if (virConnectDomainEventDeregisterEnsureACL(conn) < 0)
return -1;
- libxlDriverLock(driver);
ret = virDomainEventStateDeregister(conn,
driver->domainEventState,
callback);
- libxlDriverUnlock(driver);
return ret;
}
virDomainObjPtr vm;
int ret = -1;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(dom->uuid, uuidstr);
char *configFile = NULL, *autostartLink = NULL;
int ret = -1;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
-
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(dom->uuid, uuidstr);
VIR_FREE(autostartLink);
if (vm)
virObjectUnlock(vm);
- libxlDriverUnlock(driver);
virObjectUnref(cfg);
return ret;
}
const char *name = NULL;
libxl_scheduler sched_id;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
/* We don't return strings, and thus trivially support this flag. */
flags &= ~VIR_TYPED_PARAM_STRING_OKAY;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s",
_("no domain with matching uuid"));
NULL) < 0)
return -1;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s", _("no domain with matching uuid"));
goto cleanup;
goto cleanup;
}
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
if (!vm) {
char uuidstr[VIR_UUID_STRING_BUFLEN];
virUUIDFormat(dom->uuid, uuidstr);
* the filtering on behalf of older clients that can't parse it. */
flags &= ~VIR_TYPED_PARAM_STRING_OKAY;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
-
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, "%s",
_("no domain with matching uuid"));
virDomainObjPtr obj;
int ret = -1;
- libxlDriverLock(driver);
obj = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
if (!obj) {
virReportError(VIR_ERR_NO_DOMAIN, NULL);
goto cleanup;
virDomainObjPtr obj;
int ret = -1;
- libxlDriverLock(driver);
obj = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
if (!obj) {
virReportError(VIR_ERR_NO_DOMAIN, NULL);
goto cleanup;
virDomainObjPtr vm;
int ret = -1;
- libxlDriverLock(driver);
vm = virDomainObjListFindByUUID(driver->domains, dom->uuid);
- libxlDriverUnlock(driver);
if (!vm) {
virReportError(VIR_ERR_NO_DOMAIN, NULL);
goto cleanup;
if (virConnectDomainEventRegisterAnyEnsureACL(conn) < 0)
return -1;
- libxlDriverLock(driver);
if (virDomainEventStateRegisterID(conn,
driver->domainEventState,
dom, eventID, callback, opaque,
freecb, &ret) < 0)
ret = -1;
- libxlDriverUnlock(driver);
return ret;
}
if (virConnectDomainEventDeregisterAnyEnsureACL(conn) < 0)
return -1;
- libxlDriverLock(driver);
ret = virDomainEventStateDeregisterID(conn,
driver->domainEventState,
callbackID);
- libxlDriverUnlock(driver);
return ret;
}
if (virConnectListAllDomainsEnsureACL(conn) < 0)
return -1;
- libxlDriverLock(driver);
ret = virDomainObjListExport(driver->domains, conn, domains,
virConnectListAllDomainsCheckACL, flags);
- libxlDriverUnlock(driver);
return ret;
}