All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fabiano Rosas <farosas@suse.de>
To: Steven Sistare <steven.sistare@oracle.com>, qemu-devel@nongnu.org
Cc: Peter Xu <peterx@redhat.com>,
	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 V7 23/24] migration-test: cpr-transfer
Date: Thu, 16 Jan 2025 17:02:49 -0300	[thread overview]
Message-ID: <87zfjqedcm.fsf@suse.de> (raw)
In-Reply-To: <fe25b4b6-fd39-4c2a-a104-343b59b405b6@oracle.com>

Steven Sistare <steven.sistare@oracle.com> writes:

> On 1/16/2025 2:06 PM, Fabiano Rosas wrote:
>> Steve Sistare <steven.sistare@oracle.com> writes:
>> 
> [...]
>>> +    /*
>>> +     * The cpr channel must be included in outgoing channels, but not in
>>> +     * migrate-incoming channels.
>>> +     */
>>>       if (args->connect_channels) {
>>> +        in_channels = qobject_from_json(args->connect_channels, &error_abort);
>>>           out_channels = qobject_from_json(args->connect_channels, &error_abort);
>>> +
>>> +        if (args->cpr_channel) {
>>> +            QList *channels_list = qobject_to(QList, out_channels);
>>> +            QObject *obj = migrate_str_to_channel(args->cpr_channel);
>>> +
>>> +            qlist_append(channels_list, obj);
>>> +        }
>>>       }
>>>   
>>>       if (args->result == MIG_TEST_QMP_ERROR) {
>>> @@ -735,6 +751,9 @@ void test_precopy_common(MigrateCommon *args)
>>>       if (args->start.defer_target_connect) {
>>>           qtest_connect(to);
>>>           qtest_qmp_handshake(to);
>>> +        if (!strcmp(args->listen_uri, "defer")) {
>>> +            migrate_incoming_qmp(to, args->connect_uri, in_channels, "{}");
>>> +        }
>> 
>> Paths that don't call migrate_incoming_qmp() never free
>> in_channels. We'll need something like this, let me know if I can squash
>> it in or you want to do it differently:
>> 
>> -- >8 --
>>  From 62d60c39b3e5d38cac20241e63b9d023bd296d2f Mon Sep 17 00:00:00 2001
>> From: Fabiano Rosas <farosas@suse.de>
>> Date: Thu, 16 Jan 2025 15:40:22 -0300
>> Subject: [PATCH] fixup! migration-test: cpr-transfer
>> 
>> ---
>>   tests/qtest/migration/framework.c | 5 +++++
>>   1 file changed, 5 insertions(+)
>> 
>> diff --git a/tests/qtest/migration/framework.c b/tests/qtest/migration/framework.c
>> index 699bedae69..1d5918d922 100644
>> --- a/tests/qtest/migration/framework.c
>> +++ b/tests/qtest/migration/framework.c
>> @@ -753,9 +753,14 @@ void test_precopy_common(MigrateCommon *args)
>>           qtest_qmp_handshake(to);
>>           if (!strcmp(args->listen_uri, "defer")) {
>>               migrate_incoming_qmp(to, args->connect_uri, in_channels, "{}");
>> +            in_channels = NULL;
>>           }
>>       }
>>   
>> +    if (in_channels) {
>> +        qobject_unref(in_channels);
>> +    }
>> +
>>       if (args->result != MIG_TEST_SUCCEED) {
>>           bool allow_active = args->result == MIG_TEST_FAIL;
>>           wait_for_migration_fail(from, allow_active);
>
> Thank-you, though it would be more direct to avoid creating in_channels when
> not needed:
>
>      if (args->connect_channels) {
>          if (args->start.defer_target_connect) {
>              in_channels = qobject_from_json(args->connect_channels,
>                                              &error_abort);
>          }
>          out_channels = qobject_from_json(args->connect_channels, &error_abort);

That's better, but still needs one unref for the listen_uri != defer path.

>
> - Steve


  reply	other threads:[~2025-01-16 20:03 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-15 19:00 [PATCH V7 00/24] Live update: cpr-transfer Steve Sistare
2025-01-15 19:00 ` [PATCH V7 01/24] backends/hostmem-shm: factor out allocation of "anonymous shared memory with an fd" Steve Sistare
2025-01-15 19:00 ` [PATCH V7 02/24] physmem: fix qemu_ram_alloc_from_fd size calculation Steve Sistare
2025-01-15 19:00 ` [PATCH V7 03/24] physmem: qemu_ram_alloc_from_fd extensions Steve Sistare
2025-01-15 19:00 ` [PATCH V7 04/24] physmem: fd-based shared memory Steve Sistare
2025-01-15 19:00 ` [PATCH V7 05/24] memory: add RAM_PRIVATE Steve Sistare
2025-01-15 19:00 ` [PATCH V7 06/24] machine: aux-ram-share option Steve Sistare
2025-01-15 19:00 ` [PATCH V7 07/24] migration: cpr-state Steve Sistare
2025-01-15 19:00 ` [PATCH V7 08/24] physmem: preserve ram blocks for cpr Steve Sistare
2025-01-15 19:00 ` [PATCH V7 09/24] hostmem-memfd: preserve " Steve Sistare
2025-01-15 19:00 ` [PATCH V7 10/24] hostmem-shm: " Steve Sistare
2025-01-15 19:00 ` [PATCH V7 11/24] migration: enhance migrate_uri_parse Steve Sistare
2025-01-15 19:00 ` [PATCH V7 12/24] migration: incoming channel Steve Sistare
2025-01-15 19:00 ` [PATCH V7 13/24] migration: SCM_RIGHTS for QEMUFile Steve Sistare
2025-01-15 19:00 ` [PATCH V7 14/24] migration: VMSTATE_FD Steve Sistare
2025-01-15 19:00 ` [PATCH V7 15/24] migration: cpr-transfer save and load Steve Sistare
2025-01-15 19:00 ` [PATCH V7 16/24] migration: cpr-transfer mode Steve Sistare
2025-01-29  6:23   ` Markus Armbruster
2025-01-15 19:00 ` [PATCH V7 17/24] migration-test: memory_backend Steve Sistare
2025-01-15 19:00 ` [PATCH V7 18/24] tests/qtest: optimize migrate_set_ports Steve Sistare
2025-01-15 19:00 ` [PATCH V7 19/24] tests/qtest: defer connection Steve Sistare
2025-01-15 19:00 ` [PATCH V7 20/24] migration-test: " Steve Sistare
2025-01-15 19:00 ` [PATCH V7 21/24] tests/qtest: enhance migration channels Steve Sistare
2025-01-15 19:00 ` [PATCH V7 22/24] tests/qtest: assert qmp connected Steve Sistare
2025-01-15 19:00 ` [PATCH V7 23/24] migration-test: cpr-transfer Steve Sistare
2025-01-16 19:06   ` Fabiano Rosas
2025-01-16 19:37     ` Steven Sistare
2025-01-16 20:02       ` Fabiano Rosas [this message]
2025-01-16 20:15         ` Steven Sistare
2025-01-15 19:00 ` [PATCH V7 24/24] migration: cpr-transfer documentation Steve Sistare
2025-01-17 14:42   ` Fabiano Rosas
2025-01-17 15:04     ` Steven Sistare
2025-01-17 15:29       ` Fabiano Rosas
2025-01-17 16:58         ` Steven Sistare
2025-01-17 19:06           ` Fabiano Rosas
2025-01-17 19:32             ` Steven Sistare
2025-01-17 20:04               ` Fabiano Rosas
2025-01-27 15:39 ` [PATCH V7 00/24] Live update: cpr-transfer Fabiano Rosas
2025-01-28 21:20   ` Steven Sistare
2025-01-29  6:24     ` Markus Armbruster
2025-04-09 16:22 ` Vladimir Sementsov-Ogievskiy
2025-04-09 17:48   ` Steven Sistare
2025-04-09 18:06     ` Vladimir Sementsov-Ogievskiy
2025-04-09 17:50   ` Vladimir Sementsov-Ogievskiy

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=87zfjqedcm.fsf@suse.de \
    --to=farosas@suse.de \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=david@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@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.