From: Peter Xu <peterx@redhat.com>
To: Steven 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 V5 22/23] migration-test: cpr-transfer
Date: Thu, 2 Jan 2025 15:09:41 -0500 [thread overview]
Message-ID: <Z3byhQ_GHWKAZVpC@x1n> (raw)
In-Reply-To: <4becdc50-7f43-4683-9c76-cb75105ee998@oracle.com>
On Thu, Jan 02, 2025 at 01:35:01PM -0500, Steven Sistare wrote:
> On 12/24/2024 3:01 PM, Peter Xu wrote:
> > On Tue, Dec 24, 2024 at 08:17:07AM -0800, Steve Sistare wrote:
> > > Add a migration test for cpr-transfer mode. Defer the connection to the
> > > target monitor, else the test hangs because in cpr-transfer mode QEMU does
> > > not listen for monitor connections until we send the migrate command to
> > > source QEMU.
> > >
> > > To test -incoming defer, send a migrate incoming command to the target,
> > > after sending the migrate command to the source, as required by
> > > cpr-transfer mode.
> > >
> > > Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
> > > ---
> > > tests/qtest/migration/cpr-tests.c | 60 +++++++++++++++++++++++++++++++++++++++
> > > tests/qtest/migration/framework.c | 19 +++++++++++++
> > > tests/qtest/migration/framework.h | 3 ++
> > > 3 files changed, 82 insertions(+)
> > >
> > > diff --git a/tests/qtest/migration/cpr-tests.c b/tests/qtest/migration/cpr-tests.c
> > > index 44ce89a..b221980 100644
> > > --- a/tests/qtest/migration/cpr-tests.c
> > > +++ b/tests/qtest/migration/cpr-tests.c
> > > @@ -44,6 +44,62 @@ static void test_mode_reboot(void)
> > > test_file_common(&args, true);
> > > }
> > > +static void *test_mode_transfer_start(QTestState *from, QTestState *to)
> > > +{
> > > + migrate_set_parameter_str(from, "mode", "cpr-transfer");
> > > + return NULL;
> > > +}
> > > +
> > > +/*
> > > + * cpr-transfer mode cannot use the target monitor prior to starting the
> > > + * migration, and cannot connect synchronously to the monitor, so defer
> > > + * the target connection.
> > > + */
> > > +static void test_mode_transfer_common(bool incoming_defer)
> > > +{
> > > + g_autofree char *cpr_path = g_strdup_printf("%s/cpr.sock", tmpfs);
> > > + g_autofree char *mig_path = g_strdup_printf("%s/migsocket", tmpfs);
> > > + g_autofree char *uri = g_strdup_printf("unix:%s", mig_path);
> > > +
> > > + const char *opts = "-machine aux-ram-share=on -nodefaults";
> > > + g_autofree const char *cpr_channel = g_strdup_printf(
> > > + "cpr,addr.transport=socket,addr.type=unix,addr.path=%s",
> > > + cpr_path);
> > > + g_autofree char *opts_target = g_strdup_printf("-incoming %s %s",
> > > + cpr_channel, opts);
> > > +
> > > + g_autofree char *connect_channels = g_strdup_printf(
> > > + "[ { 'channel-type': 'main',"
> > > + " 'addr': { 'transport': 'socket',"
> > > + " 'type': 'unix',"
> > > + " 'path': '%s' } } ]",
> > > + mig_path);
> >
> > So this test already uses json-format channels, IMHO we probably don't need
> > MigrateCommon.cpr_channel anymore? We could put them all here. Then..
>
> The previous version of this patch did that, and did not define cpr_channel,
> but you did not like how, in addition to using args->connect_channels, I
> defined the main uri in args->connect_uri and passed it to migrate_incoming_qmp.
>
> The constraint I must satisfy is that main + cpr channels must be passed to
> migrate_qmp, but only the main channel can be passed to migrate_incoming_qmp.
Hmm true, I see now.
>
> I could instead define an optional args->incoming_channels, passed to
> migrate_incoming_qmp, and only set by cpr. Then the channel parsing extensions
> could be eliminated.
>
> This current patch with its channel parsing support does make
> test_mode_transfer_common nicer in one way: the cpr channel is only described
> once, in dotted keys format. A V6 that defines args->incoming_channels will
> need to define it once using dotted keys, to be embedded in startup args, and
> again in json in args->connect_uri.
>
> I don't feel strongly either way: keep V5, or define incoming_channels.
Me too, please choose whatever easier for you.
Thanks,
--
Peter Xu
next prev parent reply other threads:[~2025-01-02 20:11 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-24 16:16 [PATCH V5 00/23] Live update: cpr-transfer Steve Sistare
2024-12-24 16:16 ` [PATCH V5 01/23] backends/hostmem-shm: factor out allocation of "anonymous shared memory with an fd" Steve Sistare
2024-12-24 16:56 ` Peter Xu
2024-12-24 16:16 ` [PATCH V5 02/23] physmem: qemu_ram_alloc_from_fd extensions Steve Sistare
2024-12-24 17:18 ` Peter Xu
2025-01-02 18:36 ` Steven Sistare
2025-01-02 19:48 ` Peter Xu
2025-01-02 20:03 ` Steven Sistare
2024-12-24 16:16 ` [PATCH V5 03/23] physmem: fd-based shared memory Steve Sistare
2024-12-24 17:27 ` Peter Xu
2025-01-02 18:34 ` Steven Sistare
2024-12-24 16:16 ` [PATCH V5 04/23] memory: add RAM_PRIVATE Steve Sistare
2024-12-24 16:16 ` [PATCH V5 05/23] machine: aux-ram-share option Steve Sistare
2024-12-24 16:16 ` [PATCH V5 06/23] migration: cpr-state Steve Sistare
2024-12-24 16:16 ` [PATCH V5 07/23] physmem: preserve ram blocks for cpr Steve Sistare
2024-12-24 17:32 ` Peter Xu
2024-12-24 16:16 ` [PATCH V5 08/23] hostmem-memfd: preserve " Steve Sistare
2024-12-24 16:16 ` [PATCH V5 09/23] hostmem-shm: " Steve Sistare
2024-12-24 16:16 ` [PATCH V5 10/23] migration: enhance migrate_uri_parse Steve Sistare
2024-12-24 17:48 ` Peter Xu
2024-12-24 16:16 ` [PATCH V5 11/23] migration: incoming channel Steve Sistare
2024-12-24 17:51 ` Peter Xu
2024-12-24 16:16 ` [PATCH V5 12/23] migration: SCM_RIGHTS for QEMUFile Steve Sistare
2024-12-24 16:16 ` [PATCH V5 13/23] migration: VMSTATE_FD Steve Sistare
2024-12-24 16:16 ` [PATCH V5 14/23] migration: cpr-transfer save and load Steve Sistare
2024-12-24 16:17 ` [PATCH V5 15/23] migration: cpr-transfer mode Steve Sistare
2024-12-24 19:24 ` Peter Xu
2025-01-02 19:21 ` Steven Sistare
2025-01-02 19:57 ` Peter Xu
2025-01-02 20:05 ` Steven Sistare
2025-01-07 12:05 ` Markus Armbruster
2025-01-07 15:38 ` Steven Sistare
2025-01-17 13:44 ` Markus Armbruster
2025-01-27 16:35 ` Steven Sistare
2025-01-28 11:56 ` Markus Armbruster
2025-01-28 21:19 ` Steven Sistare
2025-01-28 21:30 ` Steven Sistare
2025-01-29 6:19 ` Markus Armbruster
2024-12-24 16:17 ` [PATCH V5 16/23] migration-test: memory_backend Steve Sistare
2024-12-24 16:17 ` [PATCH V5 17/23] tests/qtest: optimize migrate_set_ports Steve Sistare
2024-12-24 19:26 ` Peter Xu
2024-12-24 16:17 ` [PATCH V5 18/23] tests/qtest: defer connection Steve Sistare
2024-12-24 19:27 ` Peter Xu
2024-12-24 16:17 ` [PATCH V5 19/23] migration-test: " Steve Sistare
2024-12-24 16:17 ` [PATCH V5 20/23] tests/qtest: enhance migration channels Steve Sistare
2024-12-24 19:48 ` Peter Xu
2024-12-24 16:17 ` [PATCH V5 21/23] tests/qtest: assert qmp_ready Steve Sistare
2024-12-24 19:54 ` Peter Xu
2025-01-02 18:36 ` Steven Sistare
2024-12-24 16:17 ` [PATCH V5 22/23] migration-test: cpr-transfer Steve Sistare
2024-12-24 20:01 ` Peter Xu
2024-12-24 20:06 ` Peter Xu
2025-01-02 18:35 ` Steven Sistare
2025-01-02 20:11 ` Peter Xu
2025-01-02 18:35 ` Steven Sistare
2025-01-02 20:09 ` Peter Xu [this message]
2025-01-02 20:12 ` Peter Xu
2024-12-24 16:17 ` [PATCH V5 23/23] migration: cpr-transfer documentation Steve Sistare
2024-12-24 20:02 ` Peter Xu
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=Z3byhQ_GHWKAZVpC@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.