From patchwork Thu May 26 06:12:04 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amit Shah X-Patchwork-Id: 626564 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3rFfFm5spnz9t3q for ; Thu, 26 May 2016 16:22:36 +1000 (AEST) Received: from localhost ([::1]:36601 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5ogk-0005ts-Nv for incoming@patchwork.ozlabs.org; Thu, 26 May 2016 02:22:34 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35832) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5oXd-0005VQ-KX for qemu-devel@nongnu.org; Thu, 26 May 2016 02:13:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b5oXX-0008Pf-Id for qemu-devel@nongnu.org; Thu, 26 May 2016 02:13:08 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33780) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b5oXX-0008PZ-9U for qemu-devel@nongnu.org; Thu, 26 May 2016 02:13:03 -0400 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id EE646C0578CC; Thu, 26 May 2016 06:13:02 +0000 (UTC) Received: from localhost (ovpn-116-25.sin2.redhat.com [10.67.116.25]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id u4Q6D1Tw026615; Thu, 26 May 2016 02:13:02 -0400 From: Amit Shah To: Peter Maydell Date: Thu, 26 May 2016 11:42:04 +0530 Message-Id: <6f860ae75566e858593d2c067909a6d1e9feccbf.1464242913.git.amit.shah@redhat.com> In-Reply-To: References: In-Reply-To: References: X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.31]); Thu, 26 May 2016 06:13:02 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PULL 13/28] migration: rename unix.c to socket.c X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: qemu list , Amit Shah , "Dr. David Alan Gilbert" , Juan Quintela Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" From: "Daniel P. Berrange" The unix.c file will be nearly the same as the tcp.c file, only differing in the initial SocketAddress creation code. Rename unix.c to socket.c and refactor it a little to prepare for merging the TCP code. Reviewed-by: Dr. David Alan Gilbert Signed-off-by: Daniel P. Berrange Message-Id: <1461751518-12128-14-git-send-email-berrange@redhat.com> Signed-off-by: Amit Shah --- migration/Makefile.objs | 2 +- migration/socket.c | 132 ++++++++++++++++++++++++++++++++++++++++++++++++ migration/unix.c | 121 -------------------------------------------- trace-events | 8 +-- 4 files changed, 137 insertions(+), 126 deletions(-) create mode 100644 migration/socket.c delete mode 100644 migration/unix.c diff --git a/migration/Makefile.objs b/migration/Makefile.objs index ad7fed9..b0b9550 100644 --- a/migration/Makefile.objs +++ b/migration/Makefile.objs @@ -1,4 +1,4 @@ -common-obj-y += migration.o tcp.o unix.o +common-obj-y += migration.o tcp.o socket.o common-obj-y += vmstate.o common-obj-y += qemu-file.o qemu-file-buf.o qemu-file-unix.o qemu-file-stdio.o common-obj-y += qemu-file-channel.o diff --git a/migration/socket.c b/migration/socket.c new file mode 100644 index 0000000..a9911d6 --- /dev/null +++ b/migration/socket.c @@ -0,0 +1,132 @@ +/* + * QEMU live migration via Unix Domain Sockets + * + * Copyright Red Hat, Inc. 2009-2016 + * + * Authors: + * Chris Lalancette + * Daniel P. Berrange + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Contributions after 2012-01-13 are licensed under the terms of the + * GNU GPL, version 2 or (at your option) any later version. + */ + +#include "qemu/osdep.h" + +#include "qemu-common.h" +#include "qemu/error-report.h" +#include "qapi/error.h" +#include "migration/migration.h" +#include "migration/qemu-file.h" +#include "io/channel-socket.h" +#include "trace.h" + + +static SocketAddress *unix_build_address(const char *path) +{ + SocketAddress *saddr; + + saddr = g_new0(SocketAddress, 1); + saddr->type = SOCKET_ADDRESS_KIND_UNIX; + saddr->u.q_unix.data = g_new0(UnixSocketAddress, 1); + saddr->u.q_unix.data->path = g_strdup(path); + + return saddr; +} + + +static void socket_outgoing_migration(Object *src, + Error *err, + gpointer opaque) +{ + MigrationState *s = opaque; + QIOChannel *sioc = QIO_CHANNEL(src); + + if (err) { + trace_migration_socket_outgoing_error(error_get_pretty(err)); + s->to_dst_file = NULL; + migrate_fd_error(s, err); + } else { + trace_migration_socket_outgoing_connected(); + migration_set_outgoing_channel(s, sioc); + } + object_unref(src); +} + +static void socket_start_outgoing_migration(MigrationState *s, + SocketAddress *saddr, + Error **errp) +{ + QIOChannelSocket *sioc = qio_channel_socket_new(); + qio_channel_socket_connect_async(sioc, + saddr, + socket_outgoing_migration, + s, + NULL); + qapi_free_SocketAddress(saddr); +} + +void unix_start_outgoing_migration(MigrationState *s, + const char *path, + Error **errp) +{ + SocketAddress *saddr = unix_build_address(path); + socket_start_outgoing_migration(s, saddr, errp); +} + + +static gboolean socket_accept_incoming_migration(QIOChannel *ioc, + GIOCondition condition, + gpointer opaque) +{ + QIOChannelSocket *sioc; + Error *err = NULL; + + sioc = qio_channel_socket_accept(QIO_CHANNEL_SOCKET(ioc), + &err); + if (!sioc) { + error_report("could not accept migration connection (%s)", + error_get_pretty(err)); + goto out; + } + + trace_migration_socket_incoming_accepted(); + + migration_set_incoming_channel(migrate_get_current(), + QIO_CHANNEL(sioc)); + object_unref(OBJECT(sioc)); + +out: + /* Close listening socket as its no longer needed */ + qio_channel_close(ioc, NULL); + return FALSE; /* unregister */ +} + + +static void socket_start_incoming_migration(SocketAddress *saddr, + Error **errp) +{ + QIOChannelSocket *listen_ioc = qio_channel_socket_new(); + + if (qio_channel_socket_listen_sync(listen_ioc, saddr, errp) < 0) { + object_unref(OBJECT(listen_ioc)); + qapi_free_SocketAddress(saddr); + return; + } + + qio_channel_add_watch(QIO_CHANNEL(listen_ioc), + G_IO_IN, + socket_accept_incoming_migration, + listen_ioc, + (GDestroyNotify)object_unref); + qapi_free_SocketAddress(saddr); +} + +void unix_start_incoming_migration(const char *path, Error **errp) +{ + SocketAddress *saddr = unix_build_address(path); + socket_start_incoming_migration(saddr, errp); +} diff --git a/migration/unix.c b/migration/unix.c deleted file mode 100644 index 75205d4..0000000 --- a/migration/unix.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * QEMU live migration via Unix Domain Sockets - * - * Copyright Red Hat, Inc. 2009-2016 - * - * Authors: - * Chris Lalancette - * Daniel P. Berrange - * - * This work is licensed under the terms of the GNU GPL, version 2. See - * the COPYING file in the top-level directory. - * - * Contributions after 2012-01-13 are licensed under the terms of the - * GNU GPL, version 2 or (at your option) any later version. - */ - -#include "qemu/osdep.h" - -#include "qemu-common.h" -#include "qemu/error-report.h" -#include "qapi/error.h" -#include "migration/migration.h" -#include "migration/qemu-file.h" -#include "io/channel-socket.h" -#include "trace.h" - - -static SocketAddress *unix_build_address(const char *path) -{ - SocketAddress *saddr; - - saddr = g_new0(SocketAddress, 1); - saddr->type = SOCKET_ADDRESS_KIND_UNIX; - saddr->u.q_unix.data = g_new0(UnixSocketAddress, 1); - saddr->u.q_unix.data->path = g_strdup(path); - - return saddr; -} - - -static void unix_outgoing_migration(Object *src, - Error *err, - gpointer opaque) -{ - MigrationState *s = opaque; - QIOChannel *sioc = QIO_CHANNEL(src); - - if (err) { - trace_migration_unix_outgoing_error(error_get_pretty(err)); - s->to_dst_file = NULL; - migrate_fd_error(s, err); - } else { - trace_migration_unix_outgoing_connected(); - migration_set_outgoing_channel(s, sioc); - } - object_unref(src); -} - - -void unix_start_outgoing_migration(MigrationState *s, const char *path, Error **errp) -{ - SocketAddress *saddr = unix_build_address(path); - QIOChannelSocket *sioc; - sioc = qio_channel_socket_new(); - qio_channel_socket_connect_async(sioc, - saddr, - unix_outgoing_migration, - s, - NULL); - qapi_free_SocketAddress(saddr); -} - - -static gboolean unix_accept_incoming_migration(QIOChannel *ioc, - GIOCondition condition, - gpointer opaque) -{ - QIOChannelSocket *sioc; - Error *err = NULL; - - sioc = qio_channel_socket_accept(QIO_CHANNEL_SOCKET(ioc), - &err); - if (!sioc) { - error_report("could not accept migration connection (%s)", - error_get_pretty(err)); - goto out; - } - - trace_migration_unix_incoming_accepted(); - - migration_set_incoming_channel(migrate_get_current(), - QIO_CHANNEL(sioc)); - object_unref(OBJECT(sioc)); - -out: - /* Close listening socket as its no longer needed */ - qio_channel_close(ioc, NULL); - return FALSE; /* unregister */ -} - - -void unix_start_incoming_migration(const char *path, Error **errp) -{ - SocketAddress *saddr = unix_build_address(path); - QIOChannelSocket *listen_ioc; - - listen_ioc = qio_channel_socket_new(); - if (qio_channel_socket_listen_sync(listen_ioc, saddr, errp) < 0) { - object_unref(OBJECT(listen_ioc)); - qapi_free_SocketAddress(saddr); - return; - } - - qio_channel_add_watch(QIO_CHANNEL(listen_ioc), - G_IO_IN, - unix_accept_incoming_migration, - listen_ioc, - (GDestroyNotify)object_unref); - - qapi_free_SocketAddress(saddr); -} diff --git a/trace-events b/trace-events index df4530d..62f634d 100644 --- a/trace-events +++ b/trace-events @@ -1595,10 +1595,10 @@ postcopy_ram_incoming_cleanup_entry(void) "" postcopy_ram_incoming_cleanup_exit(void) "" postcopy_ram_incoming_cleanup_join(void) "" -# migration/unix.c -migration_unix_incoming_accepted(void) "" -migration_unix_outgoing_connected(void) "" -migration_unix_outgoing_error(const char *err) "error=%s" +# migration/socket.c +migration_socket_incoming_accepted(void) "" +migration_socket_outgoing_connected(void) "" +migration_socket_outgoing_error(const char *err) "error=%s" # kvm-all.c kvm_ioctl(int type, void *arg) "type 0x%x, arg %p"