From: Kevin Wolf Date: Thu, 25 May 2023 12:47:03 +0000 (+0200) Subject: block: Clarify locking rules for bdrv_open(_inherit)() X-Git-Tag: v8.1.0-rc0~87^2~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ae400dbb8f439021bca5b8a7f60907bbd2cf5291;p=thirdparty%2Fqemu.git 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 Message-Id: <20230525124713.401149-3-kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi Signed-off-by: Kevin Wolf --- diff --git a/block.c b/block.c index a2f8d5a0c0d..6ac47112fe4 100644 --- a/block.c +++ b/block.c @@ -3810,9 +3810,7 @@ out: * 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). * - * 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. + * The caller must always hold the main AioContext lock. */ static BlockDriverState * no_coroutine_fn bdrv_open_inherit(const char *filename, const char *reference, QDict *options, @@ -4100,11 +4098,7 @@ close_and_fail: return NULL; } -/* - * 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. - */ +/* The caller must always hold the main AioContext lock. */ BlockDriverState *bdrv_open(const char *filename, const char *reference, QDict *options, int flags, Error **errp) {