On 10/25/21 12:17, 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 > 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 <eespo...@redhat.com> > Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com> > --- > block.c | 3 + > block/meson.build | 7 +- > include/block/block-common.h | 389 +++++++++++++
Can this patch be split in 3? (first) > include/block/block-global-state.h | 286 ++++++++++ (second) > include/block/block-io.h | 306 ++++++++++ (third) > include/block/block.h | 878 +---------------------------- > 6 files changed, 1012 insertions(+), 857 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 Also consider enabling scripts/git.orderfile to ease patch review.