[libvirt] [PATCH 10/14] Remove powerMgmt_valid field from capabilities struct
Daniel P. Berrange
berrange at redhat.com
Tue Nov 29 17:23:56 UTC 2011
On Tue, Nov 29, 2011 at 09:40:14AM -0700, Eric Blake wrote:
> On 11/29/2011 08:44 AM, Daniel P. Berrange wrote:
> > From: "Daniel P. Berrange" <berrange at redhat.com>
> >
> > If we ensure that virNodeSuspendGetTargetMask always resets
> > *bitmask to zero upon failure, there is no need for the
> > powerMgmt_valid field.
> >
> > * src/util/virnodesuspend.c: Ensure *bitmask is zero upon
> > failure
> > * src/conf/capabilities.c, src/conf/capabilities.h: Remove
> > powerMgmt_valid field
> > * src/qemu/qemu_capabilities.c: Remove powerMgmt_valid
>
> I'm not sure about this one. This is a semantic change in the resulting
> XML.
>
> > - if (caps->host.powerMgmt_valid) {
> > - /* The PM query was successful. */
> > - if (caps->host.powerMgmt) {
> > - /* The host supports some PM features. */
> > - unsigned int pm = caps->host.powerMgmt;
> > - virBufferAddLit(&xml, " <power_management>\n");
> > - while (pm) {
> > - int bit = ffs(pm) - 1;
> > - virBufferAsprintf(&xml, " <%s/>\n",
> > - virCapsHostPMTargetTypeToString(bit));
> > - pm &= ~(1U << bit);
> > - }
> > - virBufferAddLit(&xml, " </power_management>\n");
> > - } else {
> > - /* The host does not support any PM feature. */
> > - virBufferAddLit(&xml, " <power_management/>\n");
>
> Before, we had three cases (and documented them!):
>
> no <power_management> in the XML - we could not query (or older server)
>
> explicit <power_management/> - we successfully queried, but lack power
> management
>
> explicit <power_management> with sub-elements - what features are supported
>
>
> > + /* The PM query was successful. */
> > + if (caps->host.powerMgmt) {
> > + /* The host supports some PM features. */
> > + unsigned int pm = caps->host.powerMgmt;
> > + virBufferAddLit(&xml, " <power_management>\n");
> > + while (pm) {
> > + int bit = ffs(pm) - 1;
> > + virBufferAsprintf(&xml, " <%s/>\n",
> > + virCapsHostPMTargetTypeToString(bit));
> > + pm &= ~(1U << bit);
> > }
> > + virBufferAddLit(&xml, " </power_management>\n");
> > + } else {
> > + /* The host does not support any PM feature. */
> > + virBufferAddLit(&xml, " <power_management/>\n");
>
> Whereas after the patch, we now _always_ output a form of
> <power_management>, thus collapsing 3 states into 2.
>
> On the other hand, what is a user going to do about the difference
> between the first two? There's nothing useful they can do by knowing
> whether a host lacks power management or whether libvirt lacked the
> ability to query power management; either way, it means they can't use
> power management API.
As you say its not really useful information, and IMHO we shouldn't
be exposing whether some internal operation failed or not, in the
XML schema.
>
> So I'm 70-30 in favor of this patch.
>
> At any rate, ACK to the code, but you also need to update
> docs/formatcaps.html.in to match, if we agree to go with it.
OK will update the docs
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list