[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/6] block: don't acquire AioContext lock in bdrv_drain_al
From: |
Wilfred Mallawa |
Subject: |
Re: [PATCH v2 1/6] block: don't acquire AioContext lock in bdrv_drain_all() |
Date: |
Sun, 12 Mar 2023 23:51:57 +0000 |
On Thu, 2023-03-09 at 14:08 -0500, Stefan Hajnoczi wrote:
> 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(-)
Reviewed-by: Wilfred Mallawa <wilfred.mallawa@wdc.com>
>
> 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();
- [PATCH v2 0/6] block: switch to AIO_WAIT_WHILE_UNLOCKED() where possible, Stefan Hajnoczi, 2023/03/09
- [PATCH v2 2/6] block: convert blk_exp_close_all_type() to AIO_WAIT_WHILE_UNLOCKED(), Stefan Hajnoczi, 2023/03/09
- [PATCH v2 1/6] block: don't acquire AioContext lock in bdrv_drain_all(), Stefan Hajnoczi, 2023/03/09
- Re: [PATCH v2 1/6] block: don't acquire AioContext lock in bdrv_drain_all(),
Wilfred Mallawa <=
- [PATCH v2 3/6] block: convert bdrv_graph_wrlock() to AIO_WAIT_WHILE_UNLOCKED(), Stefan Hajnoczi, 2023/03/09
- [PATCH v2 4/6] block: convert bdrv_drain_all_begin() to AIO_WAIT_WHILE_UNLOCKED(), Stefan Hajnoczi, 2023/03/09
- [PATCH v2 5/6] hmp: convert handle_hmp_command() to AIO_WAIT_WHILE_UNLOCKED(), Stefan Hajnoczi, 2023/03/09
- [PATCH v2 6/6] monitor: convert monitor_cleanup() to AIO_WAIT_WHILE_UNLOCKED(), Stefan Hajnoczi, 2023/03/09
- Re: [PATCH v2 0/6] block: switch to AIO_WAIT_WHILE_UNLOCKED() where possible, Kevin Wolf, 2023/03/14