On 03/25/2013 02:09 PM, Luiz Capitulino wrote: > On Mon, 25 Mar 2013 16:35:11 +0100 > Igor Mammedov <imamm...@redhat.com> wrote: >
>> +void qmp_cpu_set(int64_t id, const bool online, Error **errp) >> +{ >> + if (online) { >> + do_cpu_hot_add(id, errp); >> + } else { >> + error_setg(errp, "Unplug is not implemented"); >> + } >> +} > > As a general rule, we don't allow command extensions to be done this > way because this is not queriable. A client would have to try online=off > to see if QEMU version X supports it, worse: the client would have to > parse the error message to be sure the failure actually corresponds > to unplug not implemented. > > The alternative is to have cpu-set-online and later cpu-set-offline. Quite > verbose, but doesn't have issues. > > Eric, what do you think? Good point. What is the likelihood of getting offline working before 1.5 is released? If we are certain that offline cpu support won't make this release, then having separate commands would indeed be easier to query. On the other hand, why aren't we mirroring the QMP behavior to be similar to what Lazlo already did for qga: https://lists.gnu.org/archive/html/qemu-devel/2013-03/msg01031.html That is, by having a way to query details on the set of all possible cpus (via a new command that returns an array with max cpus elements, rather than just the single int of query-cpu-max in https://lists.gnu.org/archive/html/qemu-devel/2013-03/msg04441.html), with information in that query including a second boolean stating whether that cpu can be taken offline, would be sufficiently queryable. The initial implementation would then state that an offline cpu can be taken online, but that an online cpu must remain in that state. And while typing that, I also realize that I like Lazlo's approach for another reason - guest-set-vcpus takes an array of actions, and performs as many as possible in one transaction; whereas your current cpu-set command has to be called multiple times to take multiple cpus online. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature