[libvirt] [PATCH v4 1/3] Add per-guest S3/S4 state configuration
Michal Privoznik
mprivozn at redhat.com
Thu Aug 23 14:04:14 UTC 2012
On 23.08.2012 13:47, Martin Kletzander wrote:
> There is a new <pm/> element implemented that can control what ACPI
> sleeping states will be advertised by BIOS and allowed to be switched
> to by libvirt. The default keeps defaults on hypervisor, otherwise
> forces chosen setting.
> The documentation of the pm element is added as well.
> ---
> docs/formatdomain.html.in | 24 ++++++++++++++++++++
> docs/schemas/domaincommon.rng | 39 ++++++++++++++++++++++++++++++++
> src/conf/domain_conf.c | 52 ++++++++++++++++++++++++++++++++++++++++++-
> src/conf/domain_conf.h | 15 +++++++++++++
> src/libvirt_private.syms | 2 ++
> 5 files changed, 131 insertions(+), 1 deletion(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 419088c..94a4eb7 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -125,6 +125,11 @@ VIR_ENUM_IMPL(virDomainLifecycleCrash, VIR_DOMAIN_LIFECYCLE_CRASH_LAST,
> "coredump-destroy",
> "coredump-restart")
>
> +VIR_ENUM_IMPL(virDomainPMState, VIR_DOMAIN_PM_STATE_LAST,
> + "default",
> + "yes",
> + "no")
> +
> VIR_ENUM_IMPL(virDomainDevice, VIR_DOMAIN_DEVICE_LAST,
> "none",
> "disk",
> @@ -7202,6 +7207,28 @@ static int virDomainLifecycleParseXML(xmlXPathContextPtr ctxt,
> return 0;
> }
>
> +static int
> +virDomainPMStateParseXML(xmlXPathContextPtr ctxt,
> + const char *xpath,
> + int *val)
> +{
> + int ret = -1;
> + char *tmp = virXPathString(xpath, ctxt);
> + if (tmp) {
> + *val = virDomainPMStateTypeFromString(tmp);
> + if (*val < 0) {
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
> + _("unknown PM state value %s"), tmp);
> + goto cleanup;
> + }
> + }
> +
> + ret = 0;
> + cleanup:
> + VIR_FREE(tmp);
> + return ret;
> +}
> +
> virDomainDeviceDefPtr virDomainDeviceDefParse(virCapsPtr caps,
> virDomainDefPtr def,
> const char *xmlStr,
> @@ -8569,11 +8596,21 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps,
> goto error;
>
> if (virDomainLifecycleParseXML(ctxt, "string(./on_crash[1])",
> - &def->onCrash,
> + &def->onCrash,
This indentation change is not relevant to this patch. I'd save it for a
separate patch.
> VIR_DOMAIN_LIFECYCLE_CRASH_DESTROY,
> virDomainLifecycleCrashTypeFromString) < 0)
> goto error;
>
> + if (virDomainPMStateParseXML(ctxt,
> + "string(./pm/suspend-to-mem/@enabled)",
> + &def->pm.s3) < 0)
> + goto error;
> +
> + if (virDomainPMStateParseXML(ctxt,
> + "string(./pm/suspend-to-disk/@enabled)",
> + &def->pm.s4) < 0)
> + goto error;
> +
> tmp = virXPathString("string(./clock/@offset)", ctxt);
> if (tmp) {
> if ((def->clock.offset = virDomainClockOffsetTypeFromString(tmp)) < 0) {
ACK modulo indent change.
Michal
More information about the libvir-list
mailing list