On 05/30/2013 02:24 PM, John Ferlan wrote: > Since commit '632f78ca' the 'virsh schedinfo <domain>' command 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 change will result in the following: > > Scheduler : posix > cpu_shares : 0 > > The code sequence is a 'virGetSchedulerType()' which returns the "*params" > for a subsequent 'virDomainGetSchedulerParameters[Flags]()' call. The latter > requires at least 1 'nparam' to be provided/returned. I can't find where the nparams is required to be >= 1, but that might changed since you've posted this patch. I changed the '*nparams = 1' to '0' and it works perfectly (returns only the scheduler type, so it's visible that nothing is set). > --- > src/qemu/qemu_driver.c | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > index 4a76f14..7292149 100644 > --- a/src/qemu/qemu_driver.c > +++ b/src/qemu/qemu_driver.c > @@ -6899,12 +6899,20 @@ static char *qemuDomainGetSchedulerType(virDomainPtr dom, > } > priv = vm->privateData; > > + /* Domain not running or no cgroup */ > + if (!priv->cgroup) { > + if (nparams) > + *nparams = 1; > + goto cleanup; > + } > + > if (!virCgroupHasController(priv->cgroup, VIR_CGROUP_CONTROLLER_CPU)) { > virReportError(VIR_ERR_OPERATION_INVALID, > "%s", _("cgroup CPU controller is not mounted")); > goto cleanup; > } > > + > if (nparams) { > rc = qemuGetCpuBWStatus(priv->cgroup); > if (rc < 0) > @@ -6915,11 +6923,12 @@ static char *qemuDomainGetSchedulerType(virDomainPtr dom, > *nparams = 5; > } > > +cleanup: > ignore_value(VIR_STRDUP(ret, "posix")); > You can get to here even when the domain doesn't exist and in that case NULL should be returned to indicate an error. It would also skip an error on problem in qemuGetCpuBWStatus(), but there is none printed, so at least we would return the scheduler type. > -cleanup: > if (vm) > virObjectUnlock(vm); > + > return ret; > } > > This patch fixes the problem, but may create a new one. Also 'virsh schedinfo --config <domain>' is different for running and shutoff domain, but I'm willing to overlook that since it is less problematic than what happened before. Martin -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list