Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Linux-side availability of live migration functionality
Diana Palsetia, Steve Rangel, and Mark Cartwright [Thu, 19 Jul 2012 21:36:43 +0000 (16:36 -0500)]
linux_module/palacios.h
linux_module/vm.c

index 43ffa57..fd5a188 100644 (file)
@@ -31,6 +31,9 @@
 
 #define V3_VM_MOVE_CORE 33
 
+#define V3_VM_SEND    34
+#define V3_VM_RECEIVE 35
+
 #define V3_VM_FB_INPUT 257
 #define V3_VM_FB_QUERY 258
 
index 1e9b275..b14cff4 100644 (file)
@@ -209,6 +209,53 @@ static long v3_vm_ioctl(struct file * filp,
            break;
        }
 #endif
+
+#ifdef V3_CONFIG_LIVE_MIGRATION  
+       case V3_VM_SEND: {
+           struct v3_chkpt_info chkpt_info;
+           void __user * argp = (void __user *)arg;
+           
+           memset(&chkpt_info,0, sizeof(struct v3_chkpt_info));
+           
+           if(copy_from_user(&chkpt_info, argp, sizeof(struct v3_chkpt_info))){
+               WARNING("Copy from user error getting checkpoint info\n");
+               return -EFAULT;
+           }
+           
+           
+           NOTICE("Sending (live-migrating) Guest to %s:%s\n",chkpt_info.store, chkpt_info.url); 
+           
+           if (v3_send_vm(guest->v3_ctx, chkpt_info.store, chkpt_info.url) == -1) {
+               WARNING("Error sending VM\n");
+               return -EFAULT;
+           }
+           
+           break;
+       }
+
+       case V3_VM_RECEIVE: {
+           struct v3_chkpt_info chkpt_info;
+           void __user * argp = (void __user *)arg;
+           
+           memset(&chkpt_info,0, sizeof(struct v3_chkpt_info));
+
+           if(copy_from_user(&chkpt_info, argp, sizeof(struct v3_chkpt_info))){
+               WARNING("Copy from user error getting checkpoint info\n");
+               return -EFAULT;
+           }
+           
+           
+           NOTICE("Receiving (live-migrating) Guest to %s:%s\n",chkpt_info.store, chkpt_info.url);
+           
+           if (v3_receive_vm(guest->v3_ctx, chkpt_info.store, chkpt_info.url) == -1) {
+               WARNING("Error receiving VM\n");
+               return -EFAULT;
+           }
+           
+           break;
+       }
+#endif
+
        case V3_VM_DEBUG: {
            struct v3_debug_cmd cmd;
            struct v3_debug_event evt;