[libvirt] [PATCH] Solaris PV is localtime. Allow this setting through the conversions
Daniel P. Berrange
berrange at redhat.com
Thu Jan 29 11:33:10 UTC 2009
On Wed, Jan 28, 2009 at 07:09:19PM -0800, john.levon at sun.com wrote:
> # HG changeset patch
> # User john.levon at sun.com
> # Date 1233198416 28800
> # Node ID 76d670ab6ea5476be96441ea88af94644c985201
> # Parent f0247b9f4da199c01412d5bd0f9d7d888cbb84de
> Solaris PV is localtime. Allow this setting through the conversions.
>
> Signed-off-by: John Levon <john.levon at sun.com>
>
> diff --git a/src/xend_internal.c b/src/xend_internal.c
> --- a/src/xend_internal.c
> +++ b/src/xend_internal.c
> @@ -2272,10 +2272,12 @@ xenDaemonParseSxpr(virConnectPtr conn,
> def->features |= (1 << VIR_DOMAIN_FEATURE_APIC);
> if (sexpr_int(root, "domain/image/hvm/pae"))
> def->features |= (1 << VIR_DOMAIN_FEATURE_PAE);
> -
> - if (sexpr_int(root, "domain/image/hvm/localtime"))
> + }
> +
> + if (sexpr_int(root, "domain/localtime") ||
> + sexpr_int(root, "domain/image/hvm/localtime") ||
> + sexpr_int(root, "domain/image/linux/localtime"))
> def->localtime = 1;
> - }
>
> if (sexpr_node_copy(root, hvm ?
> "domain/image/hvm/device_model" :
> @@ -5338,6 +5340,14 @@ xenDaemonFormatSxpr(virConnectPtr conn,
> }
> virBufferVSprintf(&buf, "(on_crash '%s')", tmp);
>
> + /*
> + * xend puts localtime in image/{hvm,linux}/, but is clearly
> + * bootloader independent. As a simple workaround, we define it
> + * here - xend happily picks it up from here.
> + */
> + if (def->localtime)
> + virBufferAddLit(&buf, "(localtime 1)");
> +
Hmm, current XenD may not mind having 'localtime' here, but I'm
worried older XenD may not be so forgiving. Will have to check
older source.
> if (!def->os.bootloader) {
> if (STREQ(def->os.type, "hvm"))
> hvm = 1;
> @@ -5453,9 +5463,6 @@ xenDaemonFormatSxpr(virConnectPtr conn,
> virBufferAddLit(&buf, "(serial none)");
> }
>
> - if (def->localtime)
> - virBufferAddLit(&buf, "(localtime 1)");
> -
> if (def->sounds) {
> virBufferAddLit(&buf, "(soundhw '");
> if (xenDaemonFormatSxprSound(conn, def, &buf) < 0)
> diff --git a/src/xm_internal.c b/src/xm_internal.c
> --- a/src/xm_internal.c
> +++ b/src/xm_internal.c
> @@ -818,10 +818,11 @@ xenXMDomainConfigParse(virConnectPtr con
> goto cleanup;
> else if (val)
> def->features |= (1 << VIR_DOMAIN_FEATURE_APIC);
> -
> - if (xenXMConfigGetBool(conn, conf, "localtime", &def->localtime, 0) < 0)
> - goto cleanup;
> - }
> + }
> +
> + if (xenXMConfigGetBool(conn, conf, "localtime", &def->localtime, 0) < 0)
> + goto cleanup;
> +
> if (xenXMConfigCopyStringOpt(conn, conf, "device_model", &def->emulator) < 0)
> goto cleanup;
>
> @@ -1972,6 +1973,9 @@ virConfPtr xenXMDomainConfigFormat(virCo
> if (xenXMConfigSetInt(conf, "vcpus", def->vcpus) < 0)
> goto no_memory;
>
> + if (def->localtime && xenXMConfigSetInt(conf, "localtime", 1) < 0)
> + goto no_memory;
Existing code unconditionally sets localtime=0 and localtime=1,
but this only sets localtime=1, relying on XM defaults for localtime=0.
I prefer not to rely on defaults when writing the config back out to disk
because those have a habit of being broken over time. Unconditionally
setting it avoids the need to change all those test case config files.
> +
> if (def->cpumask &&
> !(cpus = virDomainCpuSetFormat(conn, def->cpumask, def->cpumasklen)) < 0)
> goto cleanup;
> @@ -2034,9 +2038,6 @@ virConfPtr xenXMDomainConfigFormat(virCo
> (1 << VIR_DOMAIN_FEATURE_APIC)) ? 1 : 0) < 0)
> goto no_memory;
>
> -
> - if (xenXMConfigSetInt(conf, "localtime", def->localtime ? 1 : 0) < 0)
> - goto no_memory;
>
> if (priv->xendConfigVersion == 1) {
> for (i = 0 ; i < def->ndisks ; i++) {
Regards,
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list