[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 02/25] include/block/block: split header into I/O and glob
From: |
Stefan Hajnoczi |
Subject: |
Re: [PATCH v3 02/25] include/block/block: split header into I/O and global state API |
Date: |
Thu, 21 Oct 2021 15:11:58 +0100 |
On Tue, Oct 12, 2021 at 04:48:43AM -0400, Emanuele Giuseppe Esposito wrote:
> block.h currently contains a mix of functions:
> some of them run under the BQL and modify the block layer graph,
> others are instead thread-safe and perform I/O in iothreads.
> It is not easy to understand which function is part of which
> group (I/O vs GS), and this patch aims to clarify it.
>
> The "GS" functions need the BQL, and often use
> aio_context_acquire/release and/or drain to be sure they
> can modify the graph safely.
> The I/O function are instead thread safe, and can run in
> any AioContext.
>
> By splitting the header in two files, block-io.h
> and block-global-state.h we have a clearer view on what
> needs what kind of protection. block-common.h
> instead contains common structures shared by both headers.
>
> block.h is left there for legacy and to avoid changing
> all includes in all c files that use the block APIs.
>
> Assertions are added in the next patch.
>
> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
> ---
> block.c | 3 +
> block/meson.build | 7 +-
> include/block/block-common.h | 389 +++++++++++++
> include/block/block-global-state.h | 263 +++++++++
> include/block/block-io.h | 283 ++++++++++
> include/block/block.h | 863 +----------------------------
> 6 files changed, 947 insertions(+), 861 deletions(-)
> create mode 100644 include/block/block-common.h
> create mode 100644 include/block/block-global-state.h
> create mode 100644 include/block/block-io.h
Modulo Eric's comments:
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
signature.asc
Description: PGP signature
- [PATCH v3 00/25] block layer: split block APIs in global state and I/O, Emanuele Giuseppe Esposito, 2021/10/12
- [PATCH v3 01/25] main-loop.h: introduce qemu_in_main_thread(), Emanuele Giuseppe Esposito, 2021/10/12
- [PATCH v3 02/25] include/block/block: split header into I/O and global state API, Emanuele Giuseppe Esposito, 2021/10/12
- [PATCH v3 03/25] assertions for block global state API, Emanuele Giuseppe Esposito, 2021/10/12
- [PATCH v3 05/25] block/block-backend.c: assertions for block-backend, Emanuele Giuseppe Esposito, 2021/10/12
- [PATCH v3 04/25] include/sysemu/block-backend: split header into I/O and global state (GS) API, Emanuele Giuseppe Esposito, 2021/10/12
- [PATCH v3 06/25] include/block/block_int: split header into I/O and global state API, Emanuele Giuseppe Esposito, 2021/10/12
- [PATCH v3 07/25] assertions for block_int global state API, Emanuele Giuseppe Esposito, 2021/10/12
- [PATCH v3 08/25] block: introduce assert_bdrv_graph_writable, Emanuele Giuseppe Esposito, 2021/10/12