[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 2/5] block: Add AioContextNotifier functions to
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 2/5] block: Add AioContextNotifier functions to BB |
Date: |
Mon, 17 Nov 2014 18:26:40 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 |
On 17/11/2014 16:30, Max Reitz wrote:
> Because all BlockDriverStates behind a single BlockBackend reside in a
> single AioContext, it is fine to just pass these functions
> (blk_add_aio_context_notifier() and blk_remove_aio_context_notifier())
> through to the root BlockDriverState.
>
> Signed-off-by: Max Reitz <address@hidden>
The logical question then is: are there any function in BlockDriverState
that do not make sense as a BlockBackend API?
Paolo
> ---
> block/block-backend.c | 18 ++++++++++++++++++
> include/sysemu/block-backend.h | 8 ++++++++
> 2 files changed, 26 insertions(+)
>
> diff --git a/block/block-backend.c b/block/block-backend.c
> index 89f69b7..7a7f690 100644
> --- a/block/block-backend.c
> +++ b/block/block-backend.c
> @@ -624,6 +624,24 @@ void blk_set_aio_context(BlockBackend *blk, AioContext
> *new_context)
> bdrv_set_aio_context(blk->bs, new_context);
> }
>
> +void blk_add_aio_context_notifier(BlockBackend *blk,
> + void (*attached_aio_context)(AioContext *new_context, void *opaque),
> + void (*detach_aio_context)(void *opaque), void *opaque)
> +{
> + bdrv_add_aio_context_notifier(blk->bs, attached_aio_context,
> + detach_aio_context, opaque);
> +}
> +
> +void blk_remove_aio_context_notifier(BlockBackend *blk,
> + void (*attached_aio_context)(AioContext
> *,
> + void *),
> + void (*detach_aio_context)(void *),
> + void *opaque)
> +{
> + bdrv_remove_aio_context_notifier(blk->bs, attached_aio_context,
> + detach_aio_context, opaque);
> +}
> +
> void blk_io_plug(BlockBackend *blk)
> {
> bdrv_io_plug(blk->bs);
> diff --git a/include/sysemu/block-backend.h b/include/sysemu/block-backend.h
> index 0c46b82..d9c1337 100644
> --- a/include/sysemu/block-backend.h
> +++ b/include/sysemu/block-backend.h
> @@ -135,6 +135,14 @@ void blk_op_block_all(BlockBackend *blk, Error *reason);
> void blk_op_unblock_all(BlockBackend *blk, Error *reason);
> AioContext *blk_get_aio_context(BlockBackend *blk);
> void blk_set_aio_context(BlockBackend *blk, AioContext *new_context);
> +void blk_add_aio_context_notifier(BlockBackend *blk,
> + void (*attached_aio_context)(AioContext *new_context, void *opaque),
> + void (*detach_aio_context)(void *opaque), void *opaque);
> +void blk_remove_aio_context_notifier(BlockBackend *blk,
> + void (*attached_aio_context)(AioContext
> *,
> + void *),
> + void (*detach_aio_context)(void *),
> + void *opaque);
> void blk_io_plug(BlockBackend *blk);
> void blk_io_unplug(BlockBackend *blk);
> BlockAcctStats *blk_get_stats(BlockBackend *blk);
>