virHostdevReAttachDomainDevices(hostdev_mgr, LIBXL_DRIVER_INTERNAL_NAME,
vm->def, hostdev_flags);
- VIR_FREE(priv->lockState);
- if (virDomainLockProcessPause(driver->lockManager, vm, &priv->lockState) < 0)
- VIR_WARN("Unable to release lease on %s", vm->def->name);
- VIR_DEBUG("Preserving lock state '%s'", NULLSTR(priv->lockState));
+ if (priv->lockProcessRunning) {
+ VIR_FREE(priv->lockState);
+ if (virDomainLockProcessPause(driver->lockManager, vm, &priv->lockState) < 0)
+ VIR_WARN("Unable to release lease on %s", vm->def->name);
+ else
+ priv->lockProcessRunning = false;
+ VIR_DEBUG("Preserving lock state '%s'", NULLSTR(priv->lockState));
+ }
libxlLoggerCloseFile(cfg->logger, vm->def->id);
vm->def->id = -1;
priv->lockState) < 0)
goto destroy_dom;
VIR_FREE(priv->lockState);
+ priv->lockProcessRunning = true;
/* Always enable domain death events */
if (libxl_evenable_domain_death(cfg->ctx, vm->def->id, 0, &priv->deathW))
virObjectLock(vm);
if (ret == 0) {
- if (virDomainLockProcessPause(driver->lockManager, vm, &priv->lockState) < 0)
+ if (virDomainLockProcessPause(driver->lockManager, vm, &priv->lockState) == 0) {
+ priv->lockProcessRunning = false;
+ VIR_DEBUG("Preserving lock state '%s'", NULLSTR(priv->lockState));
+ } else {
VIR_WARN("Unable to release lease on %s", vm->def->name);
- VIR_DEBUG("Preserving lock state '%s'", NULLSTR(priv->lockState));
+ }
} else {
/*
* Confirm phase will not be executed if perform fails. End the
"xen:///system",
vm,
priv->lockState);
+ priv->lockProcessRunning = true;
if (libxl_domain_resume(cfg->ctx, vm->def->id, 1, 0) == 0) {
ret = 0;
} else {