virLXCMonitorExitStatus status,
virDomainObjPtr vm)
{
+ virLXCDriverPtr driver = lxc_driver;
virLXCDomainObjPrivatePtr priv = vm->privateData;
+ lxcDriverLock(driver);
+ virObjectLock(vm);
+ lxcDriverUnlock(driver);
+
switch (status) {
case VIR_LXC_MONITOR_EXIT_STATUS_SHUTDOWN:
priv->stopReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
}
VIR_DEBUG("Domain shutoff reason %d (from status %d)",
priv->stopReason, status);
+
+ virObjectUnlock(vm);
}
static int
pid_t initpid,
virDomainObjPtr vm)
{
- virLXCDomainObjPrivatePtr priv = vm->privateData;
+ virLXCDriverPtr driver = lxc_driver;
+ virLXCDomainObjPrivatePtr priv;
ino_t inode;
+ lxcDriverLock(driver);
+ virObjectLock(vm);
+ lxcDriverUnlock(driver);
+
+ priv = vm->privateData;
priv->initpid = initpid;
if (virLXCProcessGetNsInode(initpid, "pid", &inode) < 0) {
if (virDomainSaveStatus(lxc_driver->xmlconf, lxc_driver->stateDir, vm) < 0)
VIR_WARN("Cannot update XML with PID for LXC %s", vm->def->name);
+
+ virObjectUnlock(vm);
}
static virLXCMonitorCallbacks monitorCallbacks = {