[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 2/8] block: protect write threshold QMP commands from conc
From: |
Stefan Hajnoczi |
Subject: |
Re: [PATCH v2 2/8] block: protect write threshold QMP commands from concurrent requests |
Date: |
Wed, 5 May 2021 09:55:51 +0100 |
On Mon, Apr 19, 2021 at 10:55:35AM +0200, Emanuele Giuseppe Esposito wrote:
> For simplicity, use bdrv_drained_begin/end to avoid concurrent
> writes to the write threshold, or reading it while it is being set.
> qmp_block_set_write_threshold is protected by the BQL.
>
> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
> Co-developed-by: Paolo Bonzini <pbonzini@redhat.com>
> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
> ---
> block/write-threshold.c | 9 +++------
> 1 file changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/block/write-threshold.c b/block/write-threshold.c
> index 63040fa4f2..77c74bdaa7 100644
> --- a/block/write-threshold.c
> +++ b/block/write-threshold.c
> @@ -111,7 +111,6 @@ void qmp_block_set_write_threshold(const char *node_name,
> Error **errp)
> {
> BlockDriverState *bs;
> - AioContext *aio_context;
>
> bs = bdrv_find_node(node_name);
> if (!bs) {
> @@ -119,10 +118,8 @@ void qmp_block_set_write_threshold(const char *node_name,
> return;
> }
>
> - aio_context = bdrv_get_aio_context(bs);
> - aio_context_acquire(aio_context);
> -
> + /* Avoid a concurrent write_threshold_disable. */
> + bdrv_drained_begin(bs);
Is there documentation that says it's safe to call
bdrv_drained_begin(bs) without the AioContext acquired? AIO_WAIT_WHILE()
contradicts this:
The caller's thread must be the IOThread that owns @ctx or the main loop
thread (with @ctx acquired exactly once).
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
signature.asc
Description: PGP signature
- Re: [PATCH v2 2/8] block: protect write threshold QMP commands from concurrent requests,
Stefan Hajnoczi <=