From: Peter Xu <peterx@redhat.com>
To: Steve Sistare <steven.sistare@oracle.com>
Cc: qemu-devel@nongnu.org, Fabiano Rosas <farosas@suse.de>,
David Hildenbrand <david@redhat.com>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Eduardo Habkost <eduardo@habkost.net>,
Philippe Mathieu-Daude <philmd@linaro.org>,
Paolo Bonzini <pbonzini@redhat.com>,
"Daniel P. Berrange" <berrange@redhat.com>,
Markus Armbruster <armbru@redhat.com>
Subject: Re: [PATCH V2 09/13] migration: cpr-transfer save and load
Date: Mon, 7 Oct 2024 12:47:16 -0400 [thread overview]
Message-ID: <ZwQQlFkguUCp7UH1@x1n> (raw)
In-Reply-To: <1727725244-105198-10-git-send-email-steven.sistare@oracle.com>
On Mon, Sep 30, 2024 at 12:40:40PM -0700, Steve Sistare wrote:
> Add functions to create a QEMUFile based on a unix URI, for saving or
> loading, for use by cpr-transfer mode to preserve CPR state.
>
> Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
There're a few extra newlines below, though, which could be removed.
> ---
> include/migration/cpr.h | 3 ++
> migration/cpr-transfer.c | 81 ++++++++++++++++++++++++++++++++++++++++++++++++
> migration/meson.build | 1 +
> 3 files changed, 85 insertions(+)
> create mode 100644 migration/cpr-transfer.c
>
> diff --git a/include/migration/cpr.h b/include/migration/cpr.h
> index ac7a63e..51c19ed 100644
> --- a/include/migration/cpr.h
> +++ b/include/migration/cpr.h
> @@ -30,4 +30,7 @@ int cpr_state_load(Error **errp);
> void cpr_state_close(void);
> struct QIOChannel *cpr_state_ioc(void);
>
> +QEMUFile *cpr_transfer_output(const char *uri, Error **errp);
> +QEMUFile *cpr_transfer_input(const char *uri, Error **errp);
> +
> #endif
> diff --git a/migration/cpr-transfer.c b/migration/cpr-transfer.c
> new file mode 100644
> index 0000000..fb9ecd8
> --- /dev/null
> +++ b/migration/cpr-transfer.c
> @@ -0,0 +1,81 @@
> +/*
> + * Copyright (c) 2022, 2024 Oracle and/or its affiliates.
> + *
> + * This work is licensed under the terms of the GNU GPL, version 2 or later.
> + * See the COPYING file in the top-level directory.
> + */
> +
> +#include "qemu/osdep.h"
> +#include "qapi/error.h"
> +#include "io/channel-file.h"
> +#include "io/channel-socket.h"
> +#include "io/net-listener.h"
> +#include "migration/cpr.h"
> +#include "migration/migration.h"
> +#include "migration/savevm.h"
> +#include "migration/qemu-file.h"
> +#include "migration/vmstate.h"
> +
> +QEMUFile *cpr_transfer_output(const char *uri, Error **errp)
> +{
> + g_autoptr(MigrationChannel) channel = NULL;
> + QIOChannel *ioc;
> +
> + if (!migrate_uri_parse(uri, &channel, errp)) {
> + return NULL;
> + }
> +
> + if (channel->addr->transport == MIGRATION_ADDRESS_TYPE_SOCKET &&
> + channel->addr->u.socket.type == SOCKET_ADDRESS_TYPE_UNIX) {
> +
here
> + QIOChannelSocket *sioc = qio_channel_socket_new();
> + SocketAddress *saddr = &channel->addr->u.socket;
> +
> + if (qio_channel_socket_connect_sync(sioc, saddr, errp)) {
> + object_unref(OBJECT(sioc));
> + return NULL;
> + }
> + ioc = QIO_CHANNEL(sioc);
> +
here
> + } else {
> + error_setg(errp, "bad cpr-uri %s; must be unix:", uri);
> + return NULL;
> + }
> +
> + qio_channel_set_name(ioc, "cpr-out");
> + return qemu_file_new_output(ioc);
> +}
> +
> +QEMUFile *cpr_transfer_input(const char *uri, Error **errp)
> +{
> + g_autoptr(MigrationChannel) channel = NULL;
> + QIOChannel *ioc;
> +
> + if (!migrate_uri_parse(uri, &channel, errp)) {
> + return NULL;
> + }
> +
> + if (channel->addr->transport == MIGRATION_ADDRESS_TYPE_SOCKET &&
> + channel->addr->u.socket.type == SOCKET_ADDRESS_TYPE_UNIX) {
> +
here
> + QIOChannelSocket *sioc;
> + SocketAddress *saddr = &channel->addr->u.socket;
> + QIONetListener *listener = qio_net_listener_new();
> +
> + qio_net_listener_set_name(listener, "cpr-socket-listener");
> + if (qio_net_listener_open_sync(listener, saddr, 1, errp) < 0) {
> + object_unref(OBJECT(listener));
> + return NULL;
> + }
> +
> + sioc = qio_net_listener_wait_client(listener);
> + ioc = QIO_CHANNEL(sioc);
> +
here
> + } else {
> + error_setg(errp, "bad cpr-uri %s; must be unix:", uri);
> + return NULL;
> + }
> +
> + qio_channel_set_name(ioc, "cpr-in");
> + return qemu_file_new_input(ioc);
> +}
> diff --git a/migration/meson.build b/migration/meson.build
> index e5f4211..684ba98 100644
> --- a/migration/meson.build
> +++ b/migration/meson.build
> @@ -14,6 +14,7 @@ system_ss.add(files(
> 'channel.c',
> 'channel-block.c',
> 'cpr.c',
> + 'cpr-transfer.c',
> 'dirtyrate.c',
> 'exec.c',
> 'fd.c',
> --
> 1.8.3.1
>
--
Peter Xu
next prev parent reply other threads:[~2024-10-07 16:47 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-30 19:40 [PATCH V2 00/13] Live update: cpr-transfer Steve Sistare
2024-09-30 19:40 ` [PATCH V2 01/13] machine: alloc-anon option Steve Sistare
2024-10-03 16:14 ` Peter Xu
2024-10-04 10:14 ` David Hildenbrand
2024-10-04 12:33 ` Peter Xu
2024-10-04 12:54 ` David Hildenbrand
2024-10-04 13:24 ` Peter Xu
2024-10-07 16:23 ` David Hildenbrand
2024-10-07 19:05 ` Peter Xu
2024-10-07 15:36 ` Peter Xu
2024-10-07 19:30 ` Steven Sistare
2024-09-30 19:40 ` [PATCH V2 02/13] migration: cpr-state Steve Sistare
2024-10-07 14:14 ` Peter Xu
2024-10-07 19:30 ` Steven Sistare
2024-09-30 19:40 ` [PATCH V2 03/13] migration: save cpr mode Steve Sistare
2024-10-07 15:18 ` Peter Xu
2024-10-07 19:31 ` Steven Sistare
2024-10-07 20:10 ` Peter Xu
2024-10-08 15:57 ` Steven Sistare
2024-09-30 19:40 ` [PATCH V2 04/13] migration: stop vm earlier for cpr Steve Sistare
2024-10-07 15:27 ` Peter Xu
2024-10-07 20:52 ` Steven Sistare
2024-10-08 15:35 ` Peter Xu
2024-10-08 19:13 ` Steven Sistare
2024-09-30 19:40 ` [PATCH V2 05/13] physmem: preserve ram blocks " Steve Sistare
2024-10-07 15:49 ` Peter Xu
2024-10-07 16:28 ` Peter Xu
2024-10-08 15:17 ` Steven Sistare
2024-10-08 16:26 ` Peter Xu
2024-10-08 21:05 ` Steven Sistare
2024-10-08 21:32 ` Peter Xu
2024-10-31 20:32 ` Steven Sistare
2024-09-30 19:40 ` [PATCH V2 06/13] hostmem-memfd: preserve " Steve Sistare
2024-10-07 15:52 ` Peter Xu
2024-09-30 19:40 ` [PATCH V2 07/13] migration: SCM_RIGHTS for QEMUFile Steve Sistare
2024-10-07 16:06 ` Peter Xu
2024-10-07 16:35 ` Daniel P. Berrangé
2024-10-07 18:12 ` Peter Xu
2024-09-30 19:40 ` [PATCH V2 08/13] migration: VMSTATE_FD Steve Sistare
2024-10-07 16:36 ` Peter Xu
2024-10-07 19:31 ` Steven Sistare
2024-09-30 19:40 ` [PATCH V2 09/13] migration: cpr-transfer save and load Steve Sistare
2024-10-07 16:47 ` Peter Xu [this message]
2024-10-07 19:31 ` Steven Sistare
2024-10-08 15:36 ` Peter Xu
2024-09-30 19:40 ` [PATCH V2 10/13] migration: cpr-uri parameter Steve Sistare
2024-10-07 16:49 ` Peter Xu
2024-09-30 19:40 ` [PATCH V2 11/13] migration: cpr-uri option Steve Sistare
2024-10-07 16:50 ` Peter Xu
2024-09-30 19:40 ` [PATCH V2 12/13] migration: split qmp_migrate Steve Sistare
2024-10-07 19:18 ` Peter Xu
2024-09-30 19:40 ` [PATCH V2 13/13] migration: cpr-transfer mode Steve Sistare
2024-10-07 19:44 ` Peter Xu
2024-10-07 20:39 ` Steven Sistare
2024-10-08 15:45 ` Peter Xu
2024-10-08 19:12 ` Steven Sistare
2024-10-08 19:38 ` Peter Xu
2024-10-08 18:28 ` Fabiano Rosas
2024-10-08 18:47 ` Peter Xu
2024-10-08 19:11 ` Fabiano Rosas
2024-10-08 19:33 ` Steven Sistare
2024-10-08 19:48 ` Peter Xu
2024-10-09 18:43 ` Steven Sistare
2024-10-09 19:06 ` Peter Xu
2024-10-09 19:59 ` Peter Xu
2024-10-09 20:18 ` Steven Sistare
2024-10-09 20:57 ` Peter Xu
2024-10-09 22:08 ` Fabiano Rosas
2024-10-10 20:05 ` Steven Sistare
2024-10-09 20:09 ` Steven Sistare
2024-10-09 20:36 ` Peter Xu
2024-10-10 20:06 ` Steven Sistare
2024-10-10 21:23 ` Peter Xu
2024-10-24 21:12 ` Steven Sistare
2024-10-25 13:55 ` Peter Xu
2024-10-25 15:04 ` Steven Sistare
2024-10-08 19:29 ` Steven Sistare
2024-10-08 14:33 ` [PATCH V2 00/13] Live update: cpr-transfer Vladimir Sementsov-Ogievskiy
2024-10-08 21:13 ` Steven Sistare
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZwQQlFkguUCp7UH1@x1n \
--to=peterx@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=david@redhat.com \
--cc=eduardo@habkost.net \
--cc=farosas@suse.de \
--cc=marcel.apfelbaum@gmail.com \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=steven.sistare@oracle.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.