All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: qemu-block@nongnu.org, hreitz@redhat.com, eblake@redhat.com,
	qemu-devel@nongnu.org
Subject: Re: [PATCH 01/12] block-coroutine-wrapper: Take AioContext lock in no_co_wrappers
Date: Thu, 25 May 2023 14:15:44 -0400	[thread overview]
Message-ID: <20230525181544.GC132697@fedora> (raw)
In-Reply-To: <20230525124713.401149-2-kwolf@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 1101 bytes --]

On Thu, May 25, 2023 at 02:47:02PM +0200, Kevin Wolf wrote:
> All of the functions that currently take a BlockDriverState, BdrvChild
> or BlockBackend as their first parameter expect the associated
> AioContext to be locked when they are called. In the case of
> no_co_wrappers, they are called from bottom halves directly in the main
> loop, so no other caller can be expected to take the lock for them. This
> can result in assertion failures because a lock that isn't taken is
> released in nested event loops.
> 
> Looking at the first parameter is already done by co_wrappers to decide
> where the coroutine should run, so doing the same in no_co_wrappers is
> only consistent. Take the lock in the generated bottom halves to fix the
> problem.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
>  include/block/block-common.h       |  3 +++
>  block/block-backend.c              |  7 ++++++-
>  scripts/block-coroutine-wrapper.py | 25 +++++++++++++++----------
>  3 files changed, 24 insertions(+), 11 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  reply	other threads:[~2023-05-25 18:16 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-25 12:47 [PATCH 00/12] block: Fix blockdev-create with iothreads Kevin Wolf
2023-05-25 12:47 ` [PATCH 01/12] block-coroutine-wrapper: Take AioContext lock in no_co_wrappers Kevin Wolf
2023-05-25 18:15   ` Stefan Hajnoczi [this message]
2023-05-25 12:47 ` [PATCH 02/12] block: Clarify locking rules for bdrv_open(_inherit)() Kevin Wolf
2023-05-25 18:16   ` Stefan Hajnoczi
2023-05-25 12:47 ` [PATCH 03/12] block: Take main AioContext lock when calling bdrv_open() Kevin Wolf
2023-05-25 18:20   ` Stefan Hajnoczi
2023-05-26  8:27     ` Kevin Wolf
2023-05-25 12:47 ` [PATCH 04/12] block-backend: Fix blk_new_open() for iothreads Kevin Wolf
2023-05-25 18:37   ` Stefan Hajnoczi
2023-05-25 12:47 ` [PATCH 05/12] mirror: Hold main AioContext lock for calling bdrv_open_backing_file() Kevin Wolf
2023-05-25 18:40   ` Stefan Hajnoczi
2023-05-25 12:47 ` [PATCH 06/12] qcow2: Fix open with 'file' in iothread Kevin Wolf
2023-05-25 18:51   ` Stefan Hajnoczi
2023-05-26  8:40     ` Kevin Wolf
2023-05-26  9:04       ` Kevin Wolf
2023-05-25 12:47 ` [PATCH 07/12] raw-format: " Kevin Wolf
2023-05-25 18:52   ` Stefan Hajnoczi
2023-05-25 12:47 ` [PATCH 08/12] copy-before-write: Fix open with child " Kevin Wolf
2023-05-25 18:55   ` Stefan Hajnoczi
2023-05-26 14:30   ` Eric Blake
2023-05-25 12:47 ` [PATCH 09/12] block: Take AioContext lock in bdrv_open_driver() Kevin Wolf
2023-05-25 18:56   ` Stefan Hajnoczi
2023-05-25 12:47 ` [PATCH 10/12] block: Fix AioContext locking in bdrv_insert_node() Kevin Wolf
2023-05-25 18:58   ` Stefan Hajnoczi
2023-05-25 12:47 ` [PATCH 11/12] iotests: Make verify_virtio_scsi_pci_or_ccw() public Kevin Wolf
2023-05-25 18:59   ` Stefan Hajnoczi
2023-05-25 12:47 ` [PATCH 12/12] iotests: Test blockdev-create in iothread Kevin Wolf
2023-05-25 19:01   ` Stefan Hajnoczi

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=20230525181544.GC132697@fedora \
    --to=stefanha@redhat.com \
    --cc=eblake@redhat.com \
    --cc=hreitz@redhat.com \
    --cc=kwolf@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.