All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Vrabel <david.vrabel@citrix.com>
To: xen-devel@lists.xenproject.org
Cc: David Vrabel <david.vrabel@citrix.com>,
	Ian Jackson <ian.jackson@eu.citrix.com>,
	Ian Campbell <ian.campbell@citrix.com>,
	Stefano Stabellini <stefano.stabellini@eu.citrix.com>
Subject: [PATCH 7/8] xl: generate a new random VM generation ID if requested
Date: Thu, 12 Jun 2014 16:04:37 +0100	[thread overview]
Message-ID: <1402585478-3389-8-git-send-email-david.vrabel@citrix.com> (raw)
In-Reply-To: <1402585478-3389-1-git-send-email-david.vrabel@citrix.com>

If the "generation_id" option is set in the domain configuration,
generate and set a new random VM generation ID every time a domain is
created or restored.

xl lacks the infrastructure to fully track the lifecycle of VM images
as they are snapshotted and cloned (etc) so always using a new ID is
the safe option and ensures that a new one will be used where it matters.

Signed-off-by: David Vrabel <david.vrabel@citrix.com>
---
 docs/man/xl.cfg.pod.5    |   14 ++++++++++++++
 tools/libxl/xl_cmdimpl.c |    9 +++++++++
 2 files changed, 23 insertions(+)

diff --git a/docs/man/xl.cfg.pod.5 b/docs/man/xl.cfg.pod.5
index c087cbc..6176e2f 100644
--- a/docs/man/xl.cfg.pod.5
+++ b/docs/man/xl.cfg.pod.5
@@ -936,6 +936,20 @@ number of vendor defined SMBIOS structures (type 128 - 255). Since SMBIOS
 structures do not present their overall size, each entry in the file must be
 preceded by a 32b integer indicating the size of the next structure.
 
+=item B<generation_id=BOOLEAN>
+
+Provide a VM generation ID to the guest.
+
+The VM generation ID as a 128-bit random number that a guest may use
+to determine if the guest has been restored from an earlier snapshot,
+or cloned.
+
+This is required for Microsoft Windows Server 2012 (and later) domain
+controllers.
+
+See also "Virtual Machine Generation ID" by Microsoft
+(http://www.microsoft.com/en-us/download/details.aspx?id=30707).
+
 =back 
 
 =head3 Guest Virtual Time Controls
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index 64a1c77..ad50e21 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -1021,6 +1021,15 @@ static void parse_config_data(const char *config_source,
                                &b_info->u.hvm.smbios_firmware, 0);
         xlu_cfg_replace_string(config, "acpi_firmware",
                                &b_info->u.hvm.acpi_firmware, 0);
+
+        /* Generate and set a new random VM Generation ID? */
+        if (!xlu_cfg_get_long(config, "generation_id", &l, 0)) {
+            e = libxl_ms_vm_genid_generate(ctx, &b_info->u.hvm.ms_vm_genid);
+            if (e) {
+                fprintf(stderr, "ERROR: no random numbers available for \"generation_id\"\n");
+                exit(1);
+            }
+        }
         break;
     case LIBXL_DOMAIN_TYPE_PV:
     {
-- 
1.7.10.4

  parent reply	other threads:[~2014-06-12 15:05 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-06-12 15:04 [PATCHv5 0/8] tools: rework VM Generation ID David Vrabel
2014-06-12 15:04 ` [PATCH 1/8] libxc: allow xc_get/set_hvm_param() to get/set 64-bit values David Vrabel
2014-06-18 11:26   ` Ian Campbell
2014-06-18 13:05   ` Ian Campbell
2014-06-12 15:04 ` [PATCH 2/8] libxl: add libxl__random_bytes() which fills a buffer with random bytes David Vrabel
2014-06-18 11:28   ` Ian Campbell
2014-06-18 11:43     ` Roger Pau Monné
2014-06-18 13:10       ` Ian Campbell
2014-06-12 15:04 ` [PATCH 3/8] hvmloader: add helper functions to get/set HVM params David Vrabel
2014-06-12 15:04 ` [PATCH 4/8] hvm: add HVM_PARAM_VM_GENERATION_ID_ADDR David Vrabel
2014-06-12 15:04 ` [PATCH 5/8] libxc, libxl, hvmloader: strip out outdated VM generation ID implementation David Vrabel
2014-06-12 15:04 ` [PATCH 6/8] libxl: allow a generation ID to be specified at domain creation David Vrabel
2014-06-18  5:18   ` Hongyang Yang
2014-06-18  9:38     ` David Vrabel
2014-06-18  9:39       ` Ian Campbell
2014-06-18 11:33   ` Ian Campbell
2014-06-18 12:09     ` David Vrabel
2014-06-18 12:25       ` Ian Campbell
2014-06-18 13:22         ` David Vrabel
2014-06-12 15:04 ` David Vrabel [this message]
2014-06-18 11:37   ` [PATCH 7/8] xl: generate a new random VM generation ID if requested Ian Campbell
2014-06-12 15:04 ` [PATCH 8/8] docs: update docs for the ~/platform/generation-id key David Vrabel
2014-06-18 16:12 [PATCHv6 0/8] tools: rework VM Generation ID David Vrabel
2014-06-18 16:12 ` [PATCH 7/8] xl: generate a new random VM generation ID if requested David Vrabel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1402585478-3389-8-git-send-email-david.vrabel@citrix.com \
    --to=david.vrabel@citrix.com \
    --cc=ian.campbell@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.