All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kevin Wolf <kwolf@redhat.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel <qemu-devel@nongnu.org>,
	"open list:Block layer core" <qemu-block@nongnu.org>,
	Alberto Campinho Faria <afaria@redhat.com>,
	Eric Blake <eblake@redhat.com>
Subject: Re: [PATCH 06/26] blkdebug: add missing coroutine_fn annotations
Date: Thu, 6 Oct 2022 10:45:49 +0200	[thread overview]
Message-ID: <Yz6VveEZA0dWRjP6@redhat.com> (raw)
In-Reply-To: <CABgObfYmjrVbUmz9xtbVnzdDEPBEMZxtV-sYtNuO-0ZPBECstA@mail.gmail.com>

Am 05.10.2022 um 23:11 hat Paolo Bonzini geschrieben:
> Il mer 5 ott 2022, 06:32 Kevin Wolf <kwolf@redhat.com> ha scritto:
> 
> > Hm... blkdebug_debug_event() is called from bdrv_debug_event(), which is
> > not coroutine_fn. And I think that it's not coroutine_fn is correct:
> > For example, with 'qemu-img snapshot -c' you get img_snapshot() ->
> > bdrv_snapshot_create() -> qcow2_snapshot_create() ->
> > qcow2_alloc_clusters() -> BLKDBG_EVENT. I'm sure many other calls in
> > qcow2 can be reached from non-coroutine context as well.
> >
> > It almost looks like your code analysis didn't consider calls through
> > function pointers?
> >
> 
> No, that is not what happened. Rather it's that the analysis goes the
> other way round: because SUSPEND rules call qemu_coroutine_yield(),
> clang wants all the callers to be coroutine_fn too.

Ah, ok, makes sense. So checking the callers is indeed something that
requires manual review.

> It is technically incorrect that bdrv_debug_events sometimes are
> placed outside coroutine context, and QEMU would crash if those events
> were associated with a suspend rule.

Yes, looks like a bug. As long as it's only in blkdebug, we can probably
live with it (the easiest fix would probably be generating coroutine
wrappers for bdrv_debug_event(), too).

> I guess I (or you) can just drop this patch?

Yes, I can do that.

Kevin



  reply	other threads:[~2022-10-06  9:07 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-22  8:48 [PATCH v3 00/26] block: fix coroutine_fn annotations Paolo Bonzini
2022-09-22  8:48 ` [PATCH 01/26] block/nvme: separate nvme_get_free_req cases for coroutine/non-coroutine context Paolo Bonzini
2022-09-22  8:49 ` [PATCH 02/26] block: add missing coroutine_fn annotations Paolo Bonzini
2022-09-22 15:11   ` Alberto Campinho Faria
2022-09-24 13:41     ` Paolo Bonzini
2022-10-05 18:11       ` Alberto Campinho Faria
2022-09-22  8:49 ` [PATCH 03/26] qcow2: remove incorrect " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 04/26] nbd: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 05/26] coroutine: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 06/26] blkdebug: add missing " Paolo Bonzini
2022-10-05 10:32   ` Kevin Wolf
2022-10-05 21:11     ` Paolo Bonzini
2022-10-06  8:45       ` Kevin Wolf [this message]
2022-09-22  8:49 ` [PATCH 07/26] blkverify: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 08/26] file-posix: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 09/26] iscsi: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 10/26] nbd: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 11/26] nfs: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 12/26] nvme: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 13/26] parallels: " Paolo Bonzini
2022-10-05 10:44   ` Kevin Wolf
2022-09-22  8:49 ` [PATCH 14/26] qcow2: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 15/26] copy-before-write: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 16/26] curl: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 17/26] qed: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 18/26] quorum: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 19/26] throttle: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 20/26] vmdk: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 21/26] job: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 22/26] coroutine-lock: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 23/26] raw-format: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 24/26] 9p: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 25/26] migration: " Paolo Bonzini
2022-09-22  8:49 ` [PATCH 26/26] test-coroutine: " Paolo Bonzini
2022-10-06 12:17 ` [PATCH v3 00/26] block: fix " Kevin Wolf

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=Yz6VveEZA0dWRjP6@redhat.com \
    --to=kwolf@redhat.com \
    --cc=afaria@redhat.com \
    --cc=eblake@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /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.