[libvirt] [PATCH v2 2/4] Add new virDomainShutdownFlags API

Eric Blake eblake at redhat.com
Mon Jan 23 21:06:55 UTC 2012


On 01/23/2012 07:48 AM, Michal Privoznik wrote:
> Add a new API virDomainShutdownFlags and define:
> 
>     VIR_DOMAIN_SHUTDOWN_DEFAULT        = 0,
>     VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN = (1 << 0),
>     VIR_DOMAIN_SHUTDOWN_GUEST_AGENT    = (1 << 1),
> 
> Also define some flags for the reboot API
> 
>     VIR_DOMAIN_REBOOT_DEFAULT        = 0,
>     VIR_DOMAIN_REBOOT_ACPI_POWER_BTN = (1 << 0),
>     VIR_DOMAIN_REBOOT_GUEST_AGENT    = (1 << 1),
> 
> Although these two APIs currently have the same flags, using
> separate enums allows them to expand separately in the future.
> 
> Add stub impls of the new API for all existing drivers

> ---
> +++ b/include/libvirt/libvirt.h.in
> @@ -1200,7 +1200,22 @@ virDomainPtr            virDomainLookupByUUID   (virConnectPtr conn,
>  virDomainPtr            virDomainLookupByUUIDString     (virConnectPtr conn,
>                                                          const char *uuid);
>  
> +typedef enum {
> +    VIR_DOMAIN_SHUTDOWN_DEFAULT        = 0,        /* hypervisor to choose */

/to choose/choice/

> +    VIR_DOMAIN_SHUTDOWN_ACPI_POWER_BTN = (1 << 0), /* Send ACPI event */
> +    VIR_DOMAIN_SHUTDOWN_GUEST_AGENT    = (1 << 1), /* Use guest agent */
> +} virDomainShutdownFlagValues;
> +
>  int                     virDomainShutdown       (virDomainPtr domain);
> +int                     virDomainShutdownFlags  (virDomainPtr domain,
> +                                                 unsigned int flags);
> +
> +typedef enum {
> +    VIR_DOMAIN_REBOOT_DEFAULT        = 0,        /* hypervisor to choose */

and again.

> + * If @flags is set to zero, then the hypervisor will chose the

s/chose/choose/

> + * method of shutdown it considers best. To have greater control
> + * pass exactly one of the virDomainShutdownFlagValues.

Does it make sense to enforce the mutual exclusion of these flags here?
 For example, in various functions that take exactly one of
VIR_DOMAIN_AFFECT_{LIVE,CONFIG}, we enforce the mutual exclusion in
libvirt.c, so that hypervisor drivers don't have to repeat the check.

>   * virDomainReboot:
>   * @domain: a domain object
> - * @flags: extra flags; not used yet, so callers should always pass 0
> + * @flags: bitwise-OR of virDomainRebootFlagValues
>   *
>   * Reboot a domain, the domain object is still usable there after but
>   * the domain OS is being stopped for a restart.
>   * Note that the guest OS may ignore the request.
>   *
> + * If @flags is set to zero, then the hypervisor will chose the

s/chose/choose/

I can live with this with just the spelling nits fixed, so:

ACK

However, if you want to post a v3 with the mutual exclusion check added
to libvirt.c, that would also be reasonable.

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20120123/c9584597/attachment-0001.sig>


More information about the libvir-list mailing list