On Tue, Apr 25, 2023 at 07:31:46PM +0200, Kevin Wolf wrote: > Drivers were a bit confused about whether .bdrv_open can run in a > coroutine and whether or not it holds a graph lock. > > It cannot keep a graph lock from the caller across the whole function > because it both changes the graph (requires a writer lock) and does I/O > (requires a reader lock). Therefore, it should take these locks > internally as needed. > > The functions used to be called in coroutine context during image > creation. This was buggy for other reasons, and as of commit 32192301, > all block drivers go through no_co_wrappers. So it is not called in > coroutine context any more. > > Fix qcow2 and qed to work with the correct assumptions: The graph lock > needs to be taken internally instead of just assuming it's already > there, and the coroutine path is dead code that can be removed. > > Signed-off-by: Kevin Wolf <kw...@redhat.com> > --- > include/block/block_int-common.h | 8 ++++---- > block.c | 6 +++--- > block/qcow2.c | 15 ++++++--------- > block/qed.c | 18 ++++++++---------- > 4 files changed, 21 insertions(+), 26 deletions(-)
Reviewed-by: Stefan Hajnoczi <stefa...@redhat.com>
signature.asc
Description: PGP signature