qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH 8/8] migration-unix: side channel support on unix in


From: Lei Li
Subject: [Qemu-devel] [PATCH 8/8] migration-unix: side channel support on unix incoming
Date: Wed, 25 Sep 2013 22:32:48 +0800

Add side channel support on incoming part of unix migration to enable
localhost migration with page flipping approach. If there is a pipe
available by checking recv_pipefd(), it will fetch the pipe file
descriptor and open it by qemu_fopen_pipe() with read mode for the
pipe protocol introduced.

Signed-off-by: Lei Li <address@hidden>
---
 migration-unix.c |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/migration-unix.c b/migration-unix.c
index 0bfc1c7..878e063 100644
--- a/migration-unix.c
+++ b/migration-unix.c
@@ -85,6 +85,7 @@ static void unix_accept_incoming_migration(void *opaque)
     int s = (intptr_t)opaque;
     QEMUFile *f;
     int c;
+    int pipefd;
 
     do {
         c = qemu_accept(s, (struct sockaddr *)&addr, &addrlen);
@@ -99,7 +100,18 @@ static void unix_accept_incoming_migration(void *opaque)
         goto out;
     }
 
-    f = qemu_fopen_socket(c, "rb");
+    /* Check if there is a pipe fd to be recevied for a page-flipping
+     * migration */
+
+    pipefd = recv_pipefd(c);
+    if (pipefd > 0) {
+        DPRINTF("receive pipe file descriptor successfully\n");
+
+        f = qemu_fopen_pipe(pipefd, "r");
+    } else {
+        f = qemu_fopen_socket(c, "rb");
+    }
+
     if (f == NULL) {
         fprintf(stderr, "could not qemu_fopen socket\n");
         goto out;
-- 
1.7.7.6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]