[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [RFC Patch v2 11/16] xc_restore: implement for colo



All restore callbacks have been implemented. Use this callback for colo
in xc_restore.
Add a new arguement to tell xc_restore if it should use colo mode or not.

Signed-off-by: Ye Wei <wei.ye1987@xxxxxxxxx>
Signed-off-by: Jiang Yunhong <yunhong.jiang@xxxxxxxxx>
Signed-off-by: Wen Congyang <wency@xxxxxxxxxxxxxx>
---
 tools/xcutils/xc_restore.c |   36 +++++++++++++++++++++++++++++-------
 1 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/tools/xcutils/xc_restore.c b/tools/xcutils/xc_restore.c
index 35d725c..659c159 100644
--- a/tools/xcutils/xc_restore.c
+++ b/tools/xcutils/xc_restore.c
@@ -14,6 +14,7 @@
 
 #include <xenctrl.h>
 #include <xenguest.h>
+#include <xc_save_restore_colo.h>
 
 int
 main(int argc, char **argv)
@@ -26,10 +27,12 @@ main(int argc, char **argv)
     unsigned long store_mfn, console_mfn;
     xentoollog_level lvl;
     xentoollog_logger *l;
+    struct restore_callbacks callback, *callback_p;
+    int colo = 0;
 
-    if ( (argc != 8) && (argc != 9) )
+    if ( (argc != 8) && (argc != 9) && (argc != 10) )
         errx(1, "usage: %s iofd domid store_evtchn "
-             "console_evtchn hvm pae apic [superpages]", argv[0]);
+             "console_evtchn hvm pae apic [superpages [colo]]", argv[0]);
 
     lvl = XTL_DETAIL;
     lflags = XTL_STDIOSTREAM_SHOW_PID | XTL_STDIOSTREAM_HIDE_PROGRESS;
@@ -46,20 +49,39 @@ main(int argc, char **argv)
     pae  = atoi(argv[6]);
     apic = atoi(argv[7]);
     if ( argc == 9 )
-           superpages = atoi(argv[8]);
+        superpages = atoi(argv[8]);
     else
-           superpages = !!hvm;
+        superpages = !!hvm;
+
+    if ( argc == 10 )
+        colo = atoi(argv[9]);
+
+    if ( colo )
+    {
+        callback.init = colo_init;
+        callback.free = colo_free;
+        callback.get_page = colo_get_page;
+        callback.flush_memory = colo_flush_memory;
+        callback.update_p2m = colo_update_p2m_table;
+        callback.finish_restotre = colo_finish_restore;
+        callback.data = NULL;
+        callback_p = &callback;
+    }
+    else
+    {
+        callback_p = NULL;
+    }
 
     ret = xc_domain_restore(xch, io_fd, domid, store_evtchn, &store_mfn, 0,
                             console_evtchn, &console_mfn, 0, hvm, pae, 
superpages,
-                            0, NULL, NULL);
+                            0, NULL, callback_p);
 
     if ( ret == 0 )
     {
-       printf("store-mfn %li\n", store_mfn);
+        printf("store-mfn %li\n", store_mfn);
         if ( !hvm )
             printf("console-mfn %li\n", console_mfn);
-       fflush(stdout);
+        fflush(stdout);
     }
 
     xc_interface_close(xch);
-- 
1.7.4


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.