mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-24 21:45:21 +00:00
vz: implement memory setting functions
Quite straigthforward as vz sdk memory setting function makes just what we want to that is set "amount of physical memory allocated to a domain". 'useflags' is introduced for non flag function implementation. We can't just use combination of flags like "live | config" or we fail for inactive domains. Other combinations have drawbacks too. Signed-off-by: Nikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
This commit is contained in:
parent
3fbb7dba33
commit
ad584cbb6c
@ -1479,6 +1479,40 @@ vzConnectUnregisterCloseCallback(virConnectPtr conn, virConnectCloseFunc cb)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int vzDomainSetMemoryFlagsImpl(virDomainPtr domain, unsigned long memory,
|
||||||
|
unsigned int flags, bool useflags)
|
||||||
|
{
|
||||||
|
virDomainObjPtr dom = NULL;
|
||||||
|
int ret = -1;
|
||||||
|
|
||||||
|
virCheckFlags(VIR_DOMAIN_AFFECT_LIVE |
|
||||||
|
VIR_DOMAIN_AFFECT_CONFIG, -1);
|
||||||
|
|
||||||
|
if (!(dom = vzDomObjFromDomain(domain)))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (useflags && vzCheckConfigUpdateFlags(dom, &flags) < 0)
|
||||||
|
goto cleanup;
|
||||||
|
|
||||||
|
ret = prlsdkSetMemsize(dom, memory >> 10);
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
|
||||||
|
virObjectUnlock(dom);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int vzDomainSetMemoryFlags(virDomainPtr domain, unsigned long memory,
|
||||||
|
unsigned int flags)
|
||||||
|
{
|
||||||
|
return vzDomainSetMemoryFlagsImpl(domain, memory, flags, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
static int vzDomainSetMemory(virDomainPtr domain, unsigned long memory)
|
||||||
|
{
|
||||||
|
return vzDomainSetMemoryFlagsImpl(domain, memory, 0, false);
|
||||||
|
}
|
||||||
|
|
||||||
static virHypervisorDriver vzDriver = {
|
static virHypervisorDriver vzDriver = {
|
||||||
.name = "vz",
|
.name = "vz",
|
||||||
.connectOpen = vzConnectOpen, /* 0.10.0 */
|
.connectOpen = vzConnectOpen, /* 0.10.0 */
|
||||||
@ -1543,6 +1577,8 @@ static virHypervisorDriver vzDriver = {
|
|||||||
.domainMemoryStats = vzDomainMemoryStats, /* 1.2.17 */
|
.domainMemoryStats = vzDomainMemoryStats, /* 1.2.17 */
|
||||||
.connectRegisterCloseCallback = vzConnectRegisterCloseCallback, /* 1.3.2 */
|
.connectRegisterCloseCallback = vzConnectRegisterCloseCallback, /* 1.3.2 */
|
||||||
.connectUnregisterCloseCallback = vzConnectUnregisterCloseCallback, /* 1.3.2 */
|
.connectUnregisterCloseCallback = vzConnectUnregisterCloseCallback, /* 1.3.2 */
|
||||||
|
.domainSetMemoryFlags = vzDomainSetMemoryFlags, /* 1.3.4 */
|
||||||
|
.domainSetMemory = vzDomainSetMemory, /* 1.3.4 */
|
||||||
};
|
};
|
||||||
|
|
||||||
static virConnectDriver vzConnectDriver = {
|
static virConnectDriver vzConnectDriver = {
|
||||||
|
@ -4302,3 +4302,27 @@ prlsdkGetMemoryStats(virDomainObjPtr dom,
|
|||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* memsize is in MiB */
|
||||||
|
int prlsdkSetMemsize(virDomainObjPtr dom, unsigned int memsize)
|
||||||
|
{
|
||||||
|
vzDomObjPtr privdom = dom->privateData;
|
||||||
|
PRL_HANDLE job;
|
||||||
|
PRL_RESULT pret;
|
||||||
|
|
||||||
|
job = PrlVm_BeginEdit(privdom->sdkdom);
|
||||||
|
if (PRL_FAILED(waitJob(job)))
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
pret = PrlVmCfg_SetRamSize(privdom->sdkdom, memsize);
|
||||||
|
prlsdkCheckRetGoto(pret, error);
|
||||||
|
|
||||||
|
job = PrlVm_CommitEx(privdom->sdkdom, 0);
|
||||||
|
if (PRL_FAILED(waitJob(job)))
|
||||||
|
goto error;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
error:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
@ -80,3 +80,5 @@ int
|
|||||||
prlsdkGetMemoryStats(virDomainObjPtr dom, virDomainMemoryStatPtr stats, unsigned int nr_stats);
|
prlsdkGetMemoryStats(virDomainObjPtr dom, virDomainMemoryStatPtr stats, unsigned int nr_stats);
|
||||||
void
|
void
|
||||||
prlsdkDomObjFreePrivate(void *p);
|
prlsdkDomObjFreePrivate(void *p);
|
||||||
|
/* memsize is in MiB */
|
||||||
|
int prlsdkSetMemsize(virDomainObjPtr dom, unsigned int memsize);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user