block: Add bdrv_lock()/unlock()
commit18c6ac1c6eb7cc541249585836659d0d3ed3a539
authorKevin Wolf <kwolf@redhat.com>
Mon, 5 Oct 2020 15:58:54 +0000 (5 17:58 +0200)
committerMarkus Armbruster <armbru@redhat.com>
Fri, 9 Oct 2020 05:08:20 +0000 (9 07:08 +0200)
tree7a923644454f1b0a4c395a8a6673d453ec33f0b0
parente336fd4c4b2fa04e5d6c7f8ee524bfd2d9e9e8f1
block: Add bdrv_lock()/unlock()

Inside of coroutine context, we can't directly use aio_context_acquire()
for the AioContext of a block node because we already own the lock of
the current AioContext and we need to avoid double locking to prevent
deadlocks.

This provides helper functions to lock the AioContext of a node only if
it's not the same as the current AioContext.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20201005155855.256490-14-kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
block.c
include/block/block.h