[HVM] Save/restore: Sometimes the hg changeset is not available.
authorTim Deegan <Tim.Deegan@xensource.com>
Thu, 18 Jan 2007 16:48:11 +0000 (16:48 +0000)
committerTim Deegan <Tim.Deegan@xensource.com>
Thu, 18 Jan 2007 16:48:11 +0000 (16:48 +0000)
Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
xen/arch/x86/hvm/intercept.c

index 8ea9bbb8a17c38c1473aee1d6f434847863231f1..c7b56c0111a32ade00a4a903047972f8be7f6f08 100644 (file)
@@ -210,7 +210,11 @@ int hvm_save(struct vcpu *v, hvm_domain_context_t *h)
     hvm_put_32u(h, HVM_FILE_VERSION);
 
     /* save xen changeset */
-    chgset = strrchr(XEN_CHANGESET, ' ') + 1;
+    chgset = strrchr(XEN_CHANGESET, ' ');
+    if ( chgset )
+        chgset++;
+    else
+        chgset = XEN_CHANGESET;
 
     len = strlen(chgset);
     hvm_put_8u(h, len);
@@ -303,7 +307,11 @@ int hvm_load(struct vcpu *v, hvm_domain_context_t *h)
     }
 
     /* check xen change set */
-    cur_chgset = strrchr(XEN_CHANGESET, ' ') + 1;
+    cur_chgset = strrchr(XEN_CHANGESET, ' ');
+    if ( cur_chgset )
+        cur_chgset++;
+    else
+        cur_chgset = XEN_CHANGESET;
 
     len = hvm_get_8u(h);
     if (len > 20) { /*typical length is 18 -- "revision number:changeset id" */
@@ -317,6 +325,11 @@ int hvm_load(struct vcpu *v, hvm_domain_context_t *h)
         printk("warnings: try to restore hvm guest(%s) on a different changeset %s.\n",
                 chgset, cur_chgset);
 
+
+    if ( !strcmp(cur_chgset, "unavailable") )
+        printk("warnings: try to restore hvm guest when changeset is unavailable.\n");
+
+
     /* check cpuid */
     cpuid(1, &eax, &ebx, &ecx, &edx);
     ebx = hvm_get_32u(h);