From: Fabiano Rosas <farosas@suse.de>
To: Peter Xu <peterx@redhat.com>
Cc: qemu-devel@nongnu.org, Juan Quintela <quintela@redhat.com>,
Lukas Straub <lukasstraub2@web.de>,
Leonardo Bras <leobras@redhat.com>
Subject: Re: [PATCH v6 09/10] migration/yank: Keep track of registered yank instances
Date: Wed, 13 Sep 2023 18:53:20 -0300 [thread overview]
Message-ID: <87jzstkaen.fsf@suse.de> (raw)
In-Reply-To: <ZQIX+KUgL5V6H/gj@x1n>
Peter Xu <peterx@redhat.com> writes:
> On Mon, Sep 11, 2023 at 02:13:19PM -0300, Fabiano Rosas wrote:
>> The core yank code is strict about balanced registering and
>> unregistering of yank functions.
>>
>> This creates a difficulty because the migration code registers one
>> yank function per QIOChannel, but each QIOChannel can be referenced by
>> more than one QEMUFile. The yank function should not be removed until
>> all QEMUFiles have been closed.
>>
>> Keep a reference count of how many QEMUFiles are using a QIOChannel
>> that has a yank function. Only unregister the yank function when all
>> QEMUFiles have been closed.
>>
>> This improves the current code by removing the need for the programmer
>> to know which QEMUFile is the last one to be cleaned up and fixes the
>> theoretical issue of removing the yank function while another QEMUFile
>> could still be using the ioc and require a yank.
>>
>> Signed-off-by: Fabiano Rosas <farosas@suse.de>
>> ---
>> migration/yank_functions.c | 81 ++++++++++++++++++++++++++++++++++----
>> migration/yank_functions.h | 8 ++++
>> 2 files changed, 81 insertions(+), 8 deletions(-)
>
> I worry this over-complicate things.
It does. We ran out of simple options.
> If you prefer the cleaness that we operate always on qemufile level, can we
> just register each yank function per-qemufile?
"just" hehe
we could, but:
i) the yank is a per-channel operation, so this is even more unintuitive;
ii) multifd doesn't have a QEMUFile, so it will have to continue using
the ioc;
iii) we'll have to add a yank to every new QEMUFile created during the
incoming migration (colo, rdma, etc), otherwise the incoming side
will be left using iocs while the src uses the QEMUFile;
iv) this is a functional change of the yank feature for which we have no
tests.
If that's all ok to you I'll go ahead and git it a try.
> I think qmp yank will simply fail the 2nd call on the qemufile if the
> iochannel is shared with the other one, but that's totally fine, IMHO.
>
> What do you think?
>
> In all cases, we should probably at least merge patch 1-8 if that can
> resolve the CI issue. I think all of them are properly reviewed.
I agree. Someone needs to queue this though since Juan has been busy.
next prev parent reply other threads:[~2023-09-13 21:54 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-11 17:13 [PATCH v6 00/10] Fix segfault on migration return path Fabiano Rosas
2023-09-11 17:13 ` [PATCH v6 01/10] migration: Fix possible race when setting rp_state.error Fabiano Rosas
2023-09-11 17:13 ` [PATCH v6 02/10] migration: Fix possible races when shutting down the return path Fabiano Rosas
2023-09-11 17:13 ` [PATCH v6 03/10] migration: Fix possible race when shutting down to_dst_file Fabiano Rosas
2023-09-11 17:13 ` [PATCH v6 04/10] migration: Remove redundant cleanup of postcopy_qemufile_src Fabiano Rosas
2023-09-11 17:13 ` [PATCH v6 05/10] migration: Consolidate return path closing code Fabiano Rosas
2023-09-11 17:13 ` [PATCH v6 06/10] migration: Replace the return path retry logic Fabiano Rosas
2023-09-11 17:13 ` [PATCH v6 07/10] migration: Move return path cleanup to main migration thread Fabiano Rosas
2023-09-11 17:13 ` [PATCH v6 08/10] migration/yank: Use channel features Fabiano Rosas
2023-09-11 20:46 ` Philippe Mathieu-Daudé
2023-09-13 20:05 ` Peter Xu
2024-01-22 20:08 ` Fabiano Rosas
2024-01-23 1:27 ` Peter Xu
2023-09-11 17:13 ` [PATCH v6 09/10] migration/yank: Keep track of registered yank instances Fabiano Rosas
2023-09-13 20:13 ` Peter Xu
2023-09-13 21:53 ` Fabiano Rosas [this message]
2023-09-13 23:48 ` Peter Xu
2023-09-14 13:23 ` Fabiano Rosas
2023-09-14 14:57 ` Peter Xu
2023-09-25 7:38 ` Lukas Straub
2023-09-25 12:20 ` Fabiano Rosas
2023-09-25 15:32 ` Lukas Straub
2023-09-11 17:13 ` [PATCH v6 10/10] migration: Add a wrapper to cleanup migration files Fabiano Rosas
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=87jzstkaen.fsf@suse.de \
--to=farosas@suse.de \
--cc=leobras@redhat.com \
--cc=lukasstraub2@web.de \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.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.