WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-4.0-testing] xc_domain_restore: Remove static varia

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-4.0-testing] xc_domain_restore: Remove static variable 'completed'
From: "Xen patchbot-4.0-testing" <patchbot-4.0-testing@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 10 Jun 2010 02:25:46 -0700
Delivery-date: Thu, 10 Jun 2010 02:29:19 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1276160683 -3600
# Node ID 2da26c78dbb5211518993b2e2717312be81a5ac9
# Parent  a684fbef232d306b8d13ed54be891935d8cb1045
xc_domain_restore: Remove static variable 'completed'

Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
xen-unstable changeset:   21589:b311acfb2742
xen-unstable date:        Thu Jun 10 09:43:49 2010 +0100
---
 tools/libxc/xc_domain_restore.c |   58 ++++++++++++++++++++--------------------
 1 files changed, 29 insertions(+), 29 deletions(-)

diff -r a684fbef232d -r 2da26c78dbb5 tools/libxc/xc_domain_restore.c
--- a/tools/libxc/xc_domain_restore.c   Thu Jun 10 09:59:56 2010 +0100
+++ b/tools/libxc/xc_domain_restore.c   Thu Jun 10 10:04:43 2010 +0100
@@ -40,16 +40,15 @@ struct restore_ctx {
     xen_pfn_t *live_p2m; /* Live mapping of the table mapping each PFN to its 
current MFN. */
     xen_pfn_t *p2m; /* A table mapping each PFN to its new MFN. */
     xen_pfn_t *p2m_batch; /* A table of P2M mappings in the current region.  */
+    int completed; /* Set when a consistent image is available */
     struct domain_info_context dinfo;
 };
 
-/* set when a consistent image is available */
-static int completed = 0;
-
 #define HEARTBEAT_MS 1000
 
 #ifndef __MINIOS__
-static ssize_t read_exact_timed(int fd, void* buf, size_t size)
+static ssize_t read_exact_timed(struct restore_ctx *ctx,
+                                int fd, void* buf, size_t size)
 {
     size_t offset = 0;
     ssize_t len;
@@ -58,7 +57,7 @@ static ssize_t read_exact_timed(int fd, 
 
     while ( offset < size )
     {
-        if ( completed ) {
+        if ( ctx->completed ) {
             /* expect a heartbeat every HEARBEAT_MS ms maximum */
             tv.tv_sec = HEARTBEAT_MS / 1000;
             tv.tv_usec = (HEARTBEAT_MS % 1000) * 1000;
@@ -82,12 +81,9 @@ static ssize_t read_exact_timed(int fd, 
 
     return 0;
 }
-
-#define read_exact read_exact_timed
-
-#else
-#define read_exact_timed read_exact
+#define read_exact(fd,buf,size) read_exact_timed(ctx,fd,buf,size)
 #endif
+
 /*
 ** In the state file (or during transfer), all page-table pages are
 ** converted into a 'canonical' form where references to actual mfns
@@ -325,7 +321,8 @@ typedef struct {
 } tailbuf_t;
 
 /* read stream until EOF, growing buffer as necssary */
-static int compat_buffer_qemu(int fd, struct tailbuf_hvm *buf)
+static int compat_buffer_qemu(struct restore_ctx *ctx,
+                              int fd, struct tailbuf_hvm *buf)
 {
     uint8_t *qbuf, *tmp;
     int blen = 0, dlen = 0;
@@ -373,7 +370,8 @@ static int compat_buffer_qemu(int fd, st
     return 0;
 }
 
-static int buffer_qemu(int fd, struct tailbuf_hvm *buf)
+static int buffer_qemu(struct restore_ctx *ctx,
+                       int fd, struct tailbuf_hvm *buf)
 {
     uint32_t qlen;
     uint8_t *tmp;
@@ -486,9 +484,9 @@ static int buffer_tail_hvm(struct restor
      * until EOF. Remus gets around this by sending a different signature
      * which includes a length prefix */
     if ( !memcmp(qemusig, "QemuDeviceModelRecord", sizeof(qemusig)) )
-        return compat_buffer_qemu(fd, buf);
+        return compat_buffer_qemu(ctx, fd, buf);
     else if ( !memcmp(qemusig, "RemusDeviceModelState", sizeof(qemusig)) )
-        return buffer_qemu(fd, buf);
+        return buffer_qemu(ctx, fd, buf);
 
     qemusig[20] = '\0';
     ERROR("Invalid QEMU signature: %s", qemusig);
@@ -651,7 +649,8 @@ static void pagebuf_free(pagebuf_t* buf)
     }
 }
 
-static int pagebuf_get_one(pagebuf_t* buf, int fd, int xch, uint32_t dom)
+static int pagebuf_get_one(struct restore_ctx *ctx,
+                           pagebuf_t* buf, int fd, int xch, uint32_t dom)
 {
     int count, countpages, oldcount, i;
     void* ptmp;
@@ -670,7 +669,7 @@ static int pagebuf_get_one(pagebuf_t* bu
     } else if (count == -1) {
         DPRINTF("Entering page verify mode\n");
         buf->verify = 1;
-        return pagebuf_get_one(buf, fd, xch, dom);
+        return pagebuf_get_one(ctx, buf, fd, xch, dom);
     } else if (count == -2) {
         buf->new_ctxt_format = 1;
         if ( read_exact(fd, &buf->max_vcpu_id, sizeof(buf->max_vcpu_id)) ||
@@ -680,7 +679,7 @@ static int pagebuf_get_one(pagebuf_t* bu
             return -1;
         }
         // DPRINTF("Max VCPU ID: %d, vcpumap: %llx\n", buf->max_vcpu_id, 
buf->vcpumap);
-        return pagebuf_get_one(buf, fd, xch, dom);
+        return pagebuf_get_one(ctx, buf, fd, xch, dom);
     } else if (count == -3) {
         /* Skip padding 4 bytes then read the EPT identity PT location. */
         if ( read_exact(fd, &buf->identpt, sizeof(uint32_t)) ||
@@ -690,7 +689,7 @@ static int pagebuf_get_one(pagebuf_t* bu
             return -1;
         }
         // DPRINTF("EPT identity map address: %llx\n", buf->identpt);
-        return pagebuf_get_one(buf, fd, xch, dom);
+        return pagebuf_get_one(ctx, buf, fd, xch, dom);
     } else if ( count == -4 )  {
         /* Skip padding 4 bytes then read the vm86 TSS location. */
         if ( read_exact(fd, &buf->vm86_tss, sizeof(uint32_t)) ||
@@ -700,21 +699,21 @@ static int pagebuf_get_one(pagebuf_t* bu
             return -1;
         }
         // DPRINTF("VM86 TSS location: %llx\n", buf->vm86_tss);
-        return pagebuf_get_one(buf, fd, xch, dom);
+        return pagebuf_get_one(ctx, buf, fd, xch, dom);
     } else if ( count == -5 ) {
         DPRINTF("xc_domain_restore start tmem\n");
         if ( xc_tmem_restore(xch, dom, fd) ) {
             ERROR("error reading/restoring tmem");
             return -1;
         }
-        return pagebuf_get_one(buf, fd, xch, dom);
+        return pagebuf_get_one(ctx, buf, fd, xch, dom);
     }
     else if ( count == -6 ) {
         if ( xc_tmem_restore_extra(xch, dom, fd) ) {
             ERROR("error reading/restoring tmem extra");
             return -1;
         }
-        return pagebuf_get_one(buf, fd, xch, dom);
+        return pagebuf_get_one(ctx, buf, fd, xch, dom);
     } else if ( count == -7 ) {
         uint32_t tsc_mode, khz, incarn;
         uint64_t nsec;
@@ -726,7 +725,7 @@ static int pagebuf_get_one(pagebuf_t* bu
             ERROR("error reading/restoring tsc info");
             return -1;
         }
-        return pagebuf_get_one(buf, fd, xch, dom);
+        return pagebuf_get_one(ctx, buf, fd, xch, dom);
     } else if ( (count > MAX_BATCH_SIZE) || (count < 0) ) {
         ERROR("Max batch size exceeded (%d). Giving up.", count);
         return -1;
@@ -781,14 +780,15 @@ static int pagebuf_get_one(pagebuf_t* bu
     return count;
 }
 
-static int pagebuf_get(pagebuf_t* buf, int fd, int xch, uint32_t dom)
+static int pagebuf_get(struct restore_ctx *ctx,
+                       pagebuf_t* buf, int fd, int xch, uint32_t dom)
 {
     int rc;
 
     buf->nr_physpages = buf->nr_pages = 0;
 
     do {
-        rc = pagebuf_get_one(buf, fd, xch, dom);
+        rc = pagebuf_get_one(ctx, buf, fd, xch, dom);
     } while (rc > 0);
 
     if (rc < 0)
@@ -1178,9 +1178,9 @@ int xc_domain_restore(int xc_handle, int
             prev_pc = this_pc;
         }
 
-        if ( !completed ) {
+        if ( !ctx->completed ) {
             pagebuf.nr_physpages = pagebuf.nr_pages = 0;
-            if ( pagebuf_get_one(&pagebuf, io_fd, xc_handle, dom) < 0 ) {
+            if ( pagebuf_get_one(ctx, &pagebuf, io_fd, xc_handle, dom) < 0 ) {
                 ERROR("Error when reading batch\n");
                 goto out;
             }
@@ -1246,7 +1246,7 @@ int xc_domain_restore(int xc_handle, int
 
     // DPRINTF("Received all pages (%d races)\n", nraces);
 
-    if ( !completed ) {
+    if ( !ctx->completed ) {
         int flags = 0;
 
         if ( buffer_tail(ctx, &tailbuf, io_fd, max_vcpu_id, vcpumap,
@@ -1254,7 +1254,7 @@ int xc_domain_restore(int xc_handle, int
             ERROR ("error buffering image tail");
             goto out;
         }
-        completed = 1;
+        ctx->completed = 1;
         /* shift into nonblocking mode for the remainder */
         if ( (flags = fcntl(io_fd, F_GETFL,0)) < 0 )
             flags = 0;
@@ -1263,7 +1263,7 @@ int xc_domain_restore(int xc_handle, int
 
     // DPRINTF("Buffered checkpoint\n");
 
-    if ( pagebuf_get(&pagebuf, io_fd, xc_handle, dom) ) {
+    if ( pagebuf_get(ctx, &pagebuf, io_fd, xc_handle, dom) ) {
         ERROR("error when buffering batch, finishing\n");
         goto finish;
     }

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-4.0-testing] xc_domain_restore: Remove static variable 'completed', Xen patchbot-4.0-testing <=