From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51265) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VZLZi-0008Gu-Gz for qemu-devel@nongnu.org; Thu, 24 Oct 2013 10:07:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VZLZd-0002YE-RI for qemu-devel@nongnu.org; Thu, 24 Oct 2013 10:07:46 -0400 Received: from mail-wg0-x22f.google.com ([2a00:1450:400c:c00::22f]:33132) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VZLZd-0002Xy-LL for qemu-devel@nongnu.org; Thu, 24 Oct 2013 10:07:41 -0400 Received: by mail-wg0-f47.google.com with SMTP id c11so2336238wgh.2 for ; Thu, 24 Oct 2013 07:07:40 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <526929A9.9030103@redhat.com> Date: Thu, 24 Oct 2013 15:07:37 +0100 From: Paolo Bonzini MIME-Version: 1.0 References: <1382412341-1173-1-git-send-email-lilei@linux.vnet.ibm.com> <1382412341-1173-10-git-send-email-lilei@linux.vnet.ibm.com> In-Reply-To: <1382412341-1173-10-git-send-email-lilei@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 09/17] migration-local: override before_ram_iterate to send pipefd List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Lei Li Cc: aarcange@redhat.com, aliguori@us.ibm.com, quintela@redhat.com, qemu-devel@nongnu.org, mrhines@linux.vnet.ibm.com, mdroth@linux.vnet.ibm.com, lagarcia@br.ibm.com, rcj@linux.vnet.ibm.com Il 22/10/2013 04:25, Lei Li ha scritto: > Override befor_ram_iterate to send pipefd. It will write the > RAM_SAVE_FLAG_HOOK flags which will trigger the load hook to > receive it. > > Signed-off-by: Lei Li > --- > migration-local.c | 26 ++++++++++++++++++++++++++ > 1 files changed, 26 insertions(+), 0 deletions(-) > > diff --git a/migration-local.c b/migration-local.c > index ed0ae6c..92c661c 100644 > --- a/migration-local.c > +++ b/migration-local.c > @@ -114,6 +114,31 @@ static int qemu_local_close(void *opaque) > return 0; > } > > +static int send_pipefd(int sockfd, int pipefd); > + > +static int qemu_local_send_pipefd(QEMUFile *f, void *opaque, > + uint64_t flags) > +{ > + QEMUFileLocal *s = opaque; > + int ret; > + > + if (s->unix_page_flipping) { > + /* Avoid sending pipe fd again in ram_save_complete() stage */ > + if (flags != RAM_CONTROL_FINISH) { Why not "flags == RAM_CONTROL_SETUP"? > + qemu_put_be64(f, RAM_SAVE_FLAG_HOOK); > + qemu_fflush(f); > + ret = send_pipefd(s->sockfd, s->pipefd[0]); > + if (ret < 0) { > + fprintf(stderr, "failed to pass pipe\n"); > + return ret; > + } > + DPRINTF("pipe fd was sent\n"); > + } > + } > + > + return 0; > +} > + > static const QEMUFileOps pipe_read_ops = { > .get_fd = qemu_local_get_sockfd, > .get_buffer = qemu_local_get_buffer, > @@ -124,6 +149,7 @@ static const QEMUFileOps pipe_write_ops = { > .get_fd = qemu_local_get_sockfd, > .writev_buffer = qemu_local_writev_buffer, > .close = qemu_local_close, > + .before_ram_iterate = qemu_local_send_pipefd, > }; > > QEMUFile *qemu_fopen_socket_local(int sockfd, const char *mode) > Otherwise looks good. Paolo