qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Emanuele Giuseppe Esposito" <eesposit@redhat.com>,
	"Kevin Wolf" <kwolf@redhat.com>,
	armbru@redhat.com, "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	"Hanna Reitz" <hreitz@redhat.com>,
	qemu-block@nongnu.org, "Fam Zheng" <fam@euphon.net>,
	"Stefan Hajnoczi" <stefanha@redhat.com>
Subject: [PATCH v2 1/6] block: don't acquire AioContext lock in bdrv_drain_all()
Date: Thu,  9 Mar 2023 14:08:50 -0500	[thread overview]
Message-ID: <20230309190855.414275-2-stefanha@redhat.com> (raw)
In-Reply-To: <20230309190855.414275-1-stefanha@redhat.com>

There is no need for the AioContext lock in bdrv_drain_all() because
nothing in AIO_WAIT_WHILE() needs the lock and the condition is atomic.

AIO_WAIT_WHILE_UNLOCKED() has no use for the AioContext parameter other
than performing a check that is nowadays already done by the
GLOBAL_STATE_CODE()/IO_CODE() macros. Set the ctx argument to NULL here
to help us keep track of all converted callers. Eventually all callers
will have been converted and then the argument can be dropped entirely.

Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 block/block-backend.c | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/block/block-backend.c b/block/block-backend.c
index 278b04ce69..d2b6b3652d 100644
--- a/block/block-backend.c
+++ b/block/block-backend.c
@@ -1835,14 +1835,8 @@ void blk_drain_all(void)
     bdrv_drain_all_begin();
 
     while ((blk = blk_all_next(blk)) != NULL) {
-        AioContext *ctx = blk_get_aio_context(blk);
-
-        aio_context_acquire(ctx);
-
         /* We may have -ENOMEDIUM completions in flight */
-        AIO_WAIT_WHILE(ctx, qatomic_mb_read(&blk->in_flight) > 0);
-
-        aio_context_release(ctx);
+        AIO_WAIT_WHILE_UNLOCKED(NULL, qatomic_mb_read(&blk->in_flight) > 0);
     }
 
     bdrv_drain_all_end();
-- 
2.39.2



  reply	other threads:[~2023-03-09 19:10 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-09 19:08 [PATCH v2 0/6] block: switch to AIO_WAIT_WHILE_UNLOCKED() where possible Stefan Hajnoczi
2023-03-09 19:08 ` Stefan Hajnoczi [this message]
2023-03-12 23:51   ` [PATCH v2 1/6] block: don't acquire AioContext lock in bdrv_drain_all() Wilfred Mallawa
2023-03-09 19:08 ` [PATCH v2 2/6] block: convert blk_exp_close_all_type() to AIO_WAIT_WHILE_UNLOCKED() Stefan Hajnoczi
2023-03-12 23:54   ` Wilfred Mallawa
2023-03-09 19:08 ` [PATCH v2 3/6] block: convert bdrv_graph_wrlock() " Stefan Hajnoczi
2023-03-12 23:57   ` Wilfred Mallawa
2023-03-09 19:08 ` [PATCH v2 4/6] block: convert bdrv_drain_all_begin() " Stefan Hajnoczi
2023-03-13  0:00   ` Wilfred Mallawa
2023-03-09 19:08 ` [PATCH v2 5/6] hmp: convert handle_hmp_command() " Stefan Hajnoczi
2023-03-13  0:02   ` Wilfred Mallawa
2023-03-09 19:08 ` [PATCH v2 6/6] monitor: convert monitor_cleanup() " Stefan Hajnoczi
2023-03-13  0:03   ` Wilfred Mallawa
2023-03-14 17:10 ` [PATCH v2 0/6] block: switch to AIO_WAIT_WHILE_UNLOCKED() where possible 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=20230309190855.414275-2-stefanha@redhat.com \
    --to=stefanha@redhat.com \
    --cc=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eesposit@redhat.com \
    --cc=fam@euphon.net \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=philmd@linaro.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).