From: Peter Xu <peterx@redhat.com>
To: Michael Tokarev <mjt@tls.msk.ru>
Cc: Li Zhijian <lizhijian@fujitsu.com>,
zhanghailiang@xfusion.com, farosas@suse.de,
qemu-devel@nongnu.org, chen.zhang@intel.com,
Wen Congyang <wencongyang2@huawei.com>,
Xie Changlong <xiechanglong.d@gmail.com>
Subject: Re: [PATCH v2] migration/colo: Fix bdrv_graph_rdlock_main_loop: Assertion `!qemu_in_coroutine()' failed.
Date: Sun, 28 Apr 2024 08:58:52 -0400 [thread overview]
Message-ID: <Zi5IDLt7GFi7AFfC@x1n> (raw)
In-Reply-To: <41d35401-2573-415e-a475-1e81708bdaa4@tls.msk.ru>
On Sun, Apr 28, 2024 at 03:39:09PM +0300, Michael Tokarev wrote:
> 17.04.2024 05:56, Li Zhijian via wrote:
> > bdrv_activate_all() should not be called from the coroutine context, move
> > it to the QEMU thread colo_process_incoming_thread() with the bql_lock
> > protected.
> >
> > The backtrace is as follows:
> > #4 0x0000561af7948362 in bdrv_graph_rdlock_main_loop () at ../block/graph-lock.c:260
> > #5 0x0000561af7907a68 in graph_lockable_auto_lock_mainloop (x=0x7fd29810be7b) at /patch/to/qemu/include/block/graph-lock.h:259
> > #6 0x0000561af79167d1 in bdrv_activate_all (errp=0x7fd29810bed0) at ../block.c:6906
> > #7 0x0000561af762b4af in colo_incoming_co () at ../migration/colo.c:935
> > #8 0x0000561af7607e57 in process_incoming_migration_co (opaque=0x0) at ../migration/migration.c:793
> > #9 0x0000561af7adbeeb in coroutine_trampoline (i0=-106876144, i1=22042) at ../util/coroutine-ucontext.c:175
> > #10 0x00007fd2a5cf21c0 in () at /lib64/libc.so.6
> >
> > CC: Fabiano Rosas <farosas@suse.de>
> > Closes: https://gitlab.com/qemu-project/qemu/-/issues/2277
> > Fixes: 2b3912f135 ("block: Mark bdrv_first_blk() and bdrv_is_root_node() GRAPH_RDLOCK")
> > Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
>
> Commit 2b3912f135 is in 8.2 (v8.1.0-1575-g2b3912f135). Is this fix supposed to go
> to stable-8.2 series?
Yes we probably should. I've copied qemu-stable when queuing this patch
for that:
https://lore.kernel.org/r/20240423223813.3237060-27-peterx@redhat.com
> The prob here is that in 8.2, there's no bql_lock/unlock.
> I guess it should use qemu_mutex_lock_iothread() instead, for before
> 195801d700c008 "system/cpus: rename qemu_mutex_lock_iothread() to bql_lock()".
Right, some further care needs to be taken on this one indeed.
> 17.04.2024 05:56, Li Zhijian via wrote:
> > --- a/migration/colo.c
> > +++ b/migration/colo.c
> > @@ -835,6 +835,16 @@ static void *colo_process_incoming_thread(void *opaque)
> > return NULL;
> > }
> > + /* Make sure all file formats throw away their mutable metadata */
> > + bql_lock();
> > + bdrv_activate_all(&local_err);
> > + if (local_err) {
> > + bql_unlock();
> > + error_report_err(local_err);
> > + return NULL;
> > + }
> > + bql_unlock();
>
> FWIW, this can be simplified as follows:
>
> bql_lock();
> bdrv_activate_all(&local_err);
> bql_unlock();
> if (local_err) {
> error_report_err(local_err);
> return NULL;
> }
>
> (I know it is already too late)
Agree. :)
Thanks,
--
Peter Xu
next prev parent reply other threads:[~2024-04-28 13:00 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-17 2:56 [PATCH v2] migration/colo: Fix bdrv_graph_rdlock_main_loop: Assertion `!qemu_in_coroutine()' failed Li Zhijian via
2024-04-17 6:13 ` Philippe Mathieu-Daudé
2024-04-17 6:47 ` Zhang, Chen
2024-04-17 7:01 ` Philippe Mathieu-Daudé
2024-04-17 7:02 ` Zhijian Li (Fujitsu) via
2024-04-17 13:13 ` Fabiano Rosas
2024-04-17 16:41 ` Peter Xu
2024-04-28 12:39 ` Michael Tokarev
2024-04-28 12:58 ` Peter Xu [this message]
2024-04-28 12:42 ` Michael Tokarev
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=Zi5IDLt7GFi7AFfC@x1n \
--to=peterx@redhat.com \
--cc=chen.zhang@intel.com \
--cc=farosas@suse.de \
--cc=lizhijian@fujitsu.com \
--cc=mjt@tls.msk.ru \
--cc=qemu-devel@nongnu.org \
--cc=wencongyang2@huawei.com \
--cc=xiechanglong.d@gmail.com \
--cc=zhanghailiang@xfusion.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.