mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-25 07:05:28 +00:00
lxc: Resolve issue with GetScheduler APIs for non running domain
As a consequence of the cgroup layout changes from commit 'cfed9ad4', the
lxcDomainGetSchedulerParameters[Flags]()' and lxcGetSchedulerType() APIs
failed to return data for a non running domain. This can be seen through
a 'virsh schedinfo <domain>' command which returns:
Scheduler : Unknown
error: Requested operation is not valid: cgroup CPU controller is not mounted
Prior to that change a non running domain would return:
Scheduler : posix
cpu_shares : 0
vcpu_period : 0
vcpu_quota : 0
emulator_period: 0
emulator_quota : 0
This patch will restore the capability to return configuration only data
for a non running domain regardless of whether cgroups are available.
(cherry picked from commit 38ada092d1
)
This commit is contained in:
parent
245fc93c88
commit
f90b024957
@ -1617,6 +1617,14 @@ static char *lxcDomainGetSchedulerType(virDomainPtr dom,
|
|||||||
}
|
}
|
||||||
priv = vm->privateData;
|
priv = vm->privateData;
|
||||||
|
|
||||||
|
/* Domain not running, thus no cgroups - return defaults */
|
||||||
|
if (!virDomainObjIsActive(vm)) {
|
||||||
|
if (nparams)
|
||||||
|
*nparams = 3;
|
||||||
|
ignore_value(VIR_STRDUP(ret, "posix"));
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPU)) {
|
if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPU)) {
|
||||||
virReportError(VIR_ERR_OPERATION_INVALID,
|
virReportError(VIR_ERR_OPERATION_INVALID,
|
||||||
"%s", _("cgroup CPU controller is not mounted"));
|
"%s", _("cgroup CPU controller is not mounted"));
|
||||||
@ -1895,9 +1903,10 @@ lxcDomainGetSchedulerParametersFlags(virDomainPtr dom,
|
|||||||
|
|
||||||
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
if (flags & VIR_DOMAIN_AFFECT_CONFIG) {
|
||||||
shares = persistentDef->cputune.shares;
|
shares = persistentDef->cputune.shares;
|
||||||
if (*nparams > 1 && cpu_bw_status) {
|
if (*nparams > 1) {
|
||||||
period = persistentDef->cputune.period;
|
period = persistentDef->cputune.period;
|
||||||
quota = persistentDef->cputune.quota;
|
quota = persistentDef->cputune.quota;
|
||||||
|
cpu_bw_status = true; /* Allow copy of data to params[] */
|
||||||
}
|
}
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user