Am 21.01.2022 um 18:05 hat Emanuele Giuseppe Esposito geschrieben: > Similarly to the previous patches, split block-backend.h > in block-backend-io.h and block-backend-global-state.h > > In addition, remove "block/block.h" include as it seems > it is not necessary anymore, together with "qemu/iov.h" > > block-backend-common.h contains the structures shared between > the two headers, and the functions that can't be categorized as > I/O or global state. > > Assertions are added in the next patch. > > Signed-off-by: Emanuele Giuseppe Esposito <eespo...@redhat.com>
The same "GS or I/O" category is needed for drain and other polling functions here (mainly the synchronous I/O functions like blk_pread() etc.). Most of these functions just wrap the bdrv_*() counterpart, so I'm not reviewing them in detail now. I don't expect surprises as long as both interfaces are consistent. > diff --git a/block/block-backend.c b/block/block-backend.c > index 23e727199b..6f91dcc85d 100644 > --- a/block/block-backend.c > +++ b/block/block-backend.c > @@ -79,6 +79,7 @@ struct BlockBackend { > bool allow_aio_context_change; > bool allow_write_beyond_eof; > > + /* Protected by BQL lock */ > NotifierList remove_bs_notifiers, insert_bs_notifiers; > QLIST_HEAD(, BlockBackendAioNotifier) aio_notifiers; This should be just "BQL" (like in patch 2) because the L in "BQL" already means "lock", so "BQL lock" would be the "Big QEMU lock lock". (More instances in this patch.) Kevin