aboutsummaryrefslogtreecommitdiff
path: root/block/qcow2.c
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2023-02-03 16:21:42 +0100
committerKevin Wolf <kwolf@redhat.com>2023-02-23 19:49:03 +0100
commitc2b8e315162bd5d5ab30c57bcc7bbb88b3ec4d54 (patch)
tree04b293542029d7b9d5881f92aaafa547ea7fe980 /block/qcow2.c
parent32125b14606a454ed109ea6d9da32c747e94926f (diff)
downloadqemu-c2b8e315162bd5d5ab30c57bcc7bbb88b3ec4d54.zip
qemu-c2b8e315162bd5d5ab30c57bcc7bbb88b3ec4d54.tar.gz
qemu-c2b8e315162bd5d5ab30c57bcc7bbb88b3ec4d54.tar.bz2
block: Mark bdrv_co_truncate() and callers GRAPH_RDLOCK
This adds GRAPH_RDLOCK annotations to declare that callers of bdrv_co_truncate() need to hold a reader lock for the graph. For some places, we know that they will hold the lock, but we don't have the GRAPH_RDLOCK annotations yet. In this case, add assume_graph_lock() with a FIXME comment. These places will be removed once everything is properly annotated. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Message-Id: <20230203152202.49054-4-kwolf@redhat.com> Reviewed-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block/qcow2.c')
-rw-r--r--block/qcow2.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/block/qcow2.c b/block/qcow2.c
index ee0e5b4..e06ea7b 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -3183,9 +3183,9 @@ static int qcow2_set_up_encryption(BlockDriverState *bs,
*
* Returns: 0 on success, -errno on failure.
*/
-static int coroutine_fn preallocate_co(BlockDriverState *bs, uint64_t offset,
- uint64_t new_length, PreallocMode mode,
- Error **errp)
+static int coroutine_fn GRAPH_RDLOCK
+preallocate_co(BlockDriverState *bs, uint64_t offset, uint64_t new_length,
+ PreallocMode mode, Error **errp)
{
BDRVQcow2State *s = bs->opaque;
uint64_t bytes;
@@ -4209,9 +4209,9 @@ fail:
return ret;
}
-static int coroutine_fn qcow2_co_truncate(BlockDriverState *bs, int64_t offset,
- bool exact, PreallocMode prealloc,
- BdrvRequestFlags flags, Error **errp)
+static int coroutine_fn GRAPH_RDLOCK
+qcow2_co_truncate(BlockDriverState *bs, int64_t offset, bool exact,
+ PreallocMode prealloc, BdrvRequestFlags flags, Error **errp)
{
BDRVQcow2State *s = bs->opaque;
uint64_t old_length;
@@ -4672,6 +4672,8 @@ qcow2_co_pwritev_compressed_part(BlockDriverState *bs,
AioTaskPool *aio = NULL;
int ret = 0;
+ assume_graph_lock(); /* FIXME */
+
if (has_data_file(bs)) {
return -ENOTSUP;
}