1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

vz: fix active domain listing

Since commit 9c14a9ab we have broken active domain listing
because reworked prlsdkLoadDomain doesn't set dom->def->id
propely. It just looses it when a new def structure is set.
Now we make prlsdkConvertDomainState function return void
and move calling it after an old dom->def is replaces with
a new one within prlsdkLoadDomain function.

Signed-off-by: Maxim Nestratov <mnestratov@virtuozzo.com>
This commit is contained in:
Maxim Nestratov 2016-03-11 11:36:17 +03:00
parent 2e70af12f2
commit 8a74498721

View File

@ -1051,7 +1051,7 @@ prlsdkAddVNCInfo(PRL_HANDLE sdkdom, virDomainDefPtr def)
return -1; return -1;
} }
static int static void
prlsdkConvertDomainState(VIRTUAL_MACHINE_STATE domainState, prlsdkConvertDomainState(VIRTUAL_MACHINE_STATE domainState,
PRL_UINT32 envId, PRL_UINT32 envId,
virDomainObjPtr dom) virDomainObjPtr dom)
@ -1121,17 +1121,12 @@ prlsdkConvertDomainState(VIRTUAL_MACHINE_STATE domainState,
dom->def->id = envId; dom->def->id = envId;
break; break;
case VMS_UNKNOWN: case VMS_UNKNOWN:
default:
virDomainObjSetState(dom, VIR_DOMAIN_NOSTATE, virDomainObjSetState(dom, VIR_DOMAIN_NOSTATE,
VIR_DOMAIN_NOSTATE_UNKNOWN); VIR_DOMAIN_NOSTATE_UNKNOWN);
break; dom->def->id = -1;
default:
virReportError(VIR_ERR_INTERNAL_ERROR,
_("Unknown domain state: %X"), domainState);
return -1;
break; break;
} }
return 0;
} }
static int static int
@ -1374,9 +1369,6 @@ prlsdkLoadDomain(vzConnPtr privconn, virDomainObjPtr dom)
goto error; goto error;
} }
if (prlsdkConvertDomainState(domainState, envId, dom) < 0)
goto error;
/* assign new virDomainDef without any checks /* assign new virDomainDef without any checks
* we can't use virDomainObjAssignDef, because it checks * we can't use virDomainObjAssignDef, because it checks
* for state and domain name */ * for state and domain name */
@ -1386,6 +1378,8 @@ prlsdkLoadDomain(vzConnPtr privconn, virDomainObjPtr dom)
VIR_FREE(pdom->home); VIR_FREE(pdom->home);
pdom->home = home; pdom->home = home;
prlsdkConvertDomainState(domainState, envId, dom);
if (!pdom->sdkdom) { if (!pdom->sdkdom) {
PrlHandle_AddRef(sdkdom); PrlHandle_AddRef(sdkdom);
pdom->sdkdom = sdkdom; pdom->sdkdom = sdkdom;
@ -1532,8 +1526,8 @@ prlsdkHandleVmStateEvent(vzConnPtr privconn,
prlsdkCheckRetGoto(pret, cleanup); prlsdkCheckRetGoto(pret, cleanup);
pdom = dom->privateData; pdom = dom->privateData;
if (prlsdkConvertDomainState(domainState, pdom->id, dom) < 0)
goto cleanup; prlsdkConvertDomainState(domainState, pdom->id, dom);
prlsdkNewStateToEvent(domainState, prlsdkNewStateToEvent(domainState,
&lvEventType, &lvEventType,