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.
s/instead // > > 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> > --- > diff --git a/include/block/block-common.h b/include/block/block-common.h > new file mode 100644 > index 0000000000..4f1fd8de21 > --- /dev/null > +++ b/include/block/block-common.h > @@ -0,0 +1,389 @@ > +#ifndef BLOCK_COMMON_H > +#define BLOCK_COMMON_H As a new file, it probably deserves a copyright/license blurb copied from the file it is split out of. > diff --git a/include/block/block-global-state.h > b/include/block/block-global-state.h > new file mode 100644 > index 0000000000..b57e275da9 > --- /dev/null > +++ b/include/block/block-global-state.h > @@ -0,0 +1,263 @@ > +#ifndef BLOCK_GLOBAL_STATE_H > +#define BLOCK_GLOBAL_STATE_H Likewise, here and in all other newly-split files in your series. > +++ b/include/block/block.h > @@ -1,864 +1,9 @@ > #ifndef BLOCK_H > #define BLOCK_H Oh. There wasn't one to copy from :( Well, now's as good a time to fix that as any. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org