On Wed, Jul 22, 2009 at 04:23:45PM +0100, Daniel P. Berrange wrote: > * src/qemu_driver.c: Add driver methods qemuGetSchedulerType, > qemuGetSchedulerParameters, qemuSetSchedulerParameters > * src/lxc_driver.c: Fix to use unsigned long long consistently > for schedular parameters > * src/cgroup.h, src/cgroup.c: Fix cpu_shares to take unsigned > long long > * src/util.c, src/util.h, src/libvirt_private.syms: Add a > virStrToDouble helper > * src/virsh.c: Fix handling of --set arg to schedinfo command > to honour the designated data type of each schedular tunable > as declared by the driver > > Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx> > --- > src/cgroup.c | 10 +- > src/cgroup.h | 4 +- > src/libvirt_private.syms | 1 + > src/lxc_driver.c | 9 ++- > src/qemu_driver.c | 151 +++++++++++++++++++++++++++++- > src/util.c | 20 ++++ > src/util.h | 3 + [...] > @@ -1355,9 +1355,14 @@ static int lxcSetSchedulerParameters(virDomainPtr domain, > > for (i = 0; i < nparams; i++) { > virSchedParameterPtr param = ¶ms[i]; > + if (param->type != VIR_DOMAIN_SCHED_FIELD_ULLONG) { > + lxcError(NULL, domain, VIR_ERR_INVALID_ARG, > + _("invalid type for cpu_shares tunable, expected a 'ullong'")); > + goto cleanup; > + } Humpf, we are actually breaking the API in some ways there, what is the argument ? Consistency with qemu scheduling parameters ? > if (STREQ(param->field, "cpu_shares")) { [...] > + if (STREQ(param->field, "cpu_shares")) { > + int rc; > + if (param->type != VIR_DOMAIN_SCHED_FIELD_ULLONG) { Apparently, but is that worth it ? [...] > --- a/src/virsh.c > +++ b/src/virsh.c > @@ -1181,111 +1181,118 @@ static const vshCmdOptDef opts_schedinfo[] = { > }; > > static int > -cmdSchedinfo(vshControl *ctl, const vshCmd *cmd) > +cmdSchedInfoUpdate(vshControl *ctl, const vshCmd *cmd, > + virSchedParameterPtr param) > { [...] > + /* Legacy 'weight' parameter */ > + if (STREQ(param->field, "weight") && > + param->type == VIR_DOMAIN_SCHED_FIELD_UINT && > + vshCommandOptBool(cmd, "weight")) { > + int val; > + val = vshCommandOptInt(cmd, "weight", &found); > + if (!found) { > vshError(ctl, FALSE, "%s", _("Invalid value of weight")); > - goto cleanup; > + return -1; > } else { > - nr_inputparams++; > + param->value.ui = val; > } > + return 1; This API is and remains a pain, looking at the ESX driver there is just yet another completely different set ... ACK, though the lxc breakage is a bit nasty IMHO Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list