mirror of https://github.com/proxmox/mirror_qemu
block: Clarify locking rules for bdrv_open(_inherit)()
These functions specify that the caller must hold the "@filename AioContext lock". This doesn't make sense, file names don't have an AioContext. New BlockDriverStates always start in the main AioContext, so this is what we really need here. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20230525124713.401149-3-kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>master
parent
dea97c1fbd
commit
ae400dbb8f
10
block.c
10
block.c
|
@ -3810,9 +3810,7 @@ out:
|
||||||
* should be opened. If specified, neither options nor a filename may be given,
|
* should be opened. If specified, neither options nor a filename may be given,
|
||||||
* nor can an existing BDS be reused (that is, *pbs has to be NULL).
|
* nor can an existing BDS be reused (that is, *pbs has to be NULL).
|
||||||
*
|
*
|
||||||
* The caller must always hold @filename AioContext lock, because this
|
* The caller must always hold the main AioContext lock.
|
||||||
* function eventually calls bdrv_refresh_total_sectors() which polls
|
|
||||||
* when called from non-coroutine context.
|
|
||||||
*/
|
*/
|
||||||
static BlockDriverState * no_coroutine_fn
|
static BlockDriverState * no_coroutine_fn
|
||||||
bdrv_open_inherit(const char *filename, const char *reference, QDict *options,
|
bdrv_open_inherit(const char *filename, const char *reference, QDict *options,
|
||||||
|
@ -4100,11 +4098,7 @@ close_and_fail:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/* The caller must always hold the main AioContext lock. */
|
||||||
* The caller must always hold @filename AioContext lock, because this
|
|
||||||
* function eventually calls bdrv_refresh_total_sectors() which polls
|
|
||||||
* when called from non-coroutine context.
|
|
||||||
*/
|
|
||||||
BlockDriverState *bdrv_open(const char *filename, const char *reference,
|
BlockDriverState *bdrv_open(const char *filename, const char *reference,
|
||||||
QDict *options, int flags, Error **errp)
|
QDict *options, int flags, Error **errp)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue