diff options
author | Emanuele Giuseppe Esposito <eesposit@redhat.com> | 2023-01-13 21:42:07 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2023-02-01 16:52:32 +0100 |
commit | 82618d7bc341cb93b9ce9c206d7ec84cebe83d00 (patch) | |
tree | 6975780788282725aee83e4ced9de182e9c7bf46 /block/file-win32.c | |
parent | bd53086e824397a7bf0e875eaa9b339cf8394d75 (diff) | |
download | qemu-82618d7bc341cb93b9ce9c206d7ec84cebe83d00.zip qemu-82618d7bc341cb93b9ce9c206d7ec84cebe83d00.tar.gz qemu-82618d7bc341cb93b9ce9c206d7ec84cebe83d00.tar.bz2 |
block: Convert bdrv_get_allocated_file_size() to co_wrapper
bdrv_get_allocated_file_size() is categorized as an I/O function, and it
currently doesn't run in a coroutine. We should let it take a graph
rdlock since it traverses the block nodes graph, which however is only
possible in a coroutine.
Therefore turn it into a co_wrapper to move the actual function into a
coroutine where the lock can be taken.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Message-Id: <20230113204212.359076-10-kwolf@redhat.com>
Reviewed-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'block/file-win32.c')
-rw-r--r-- | block/file-win32.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/block/file-win32.c b/block/file-win32.c index 61a3aa2..200d244 100644 --- a/block/file-win32.c +++ b/block/file-win32.c @@ -559,7 +559,7 @@ static int64_t coroutine_fn raw_co_getlength(BlockDriverState *bs) return l.QuadPart; } -static int64_t raw_get_allocated_file_size(BlockDriverState *bs) +static int64_t coroutine_fn raw_co_get_allocated_file_size(BlockDriverState *bs) { typedef DWORD (WINAPI * get_compressed_t)(const char *filename, DWORD * high); @@ -765,8 +765,8 @@ BlockDriver bdrv_file = { .bdrv_co_truncate = raw_co_truncate, .bdrv_co_getlength = raw_co_getlength, - .bdrv_get_allocated_file_size - = raw_get_allocated_file_size, + .bdrv_co_get_allocated_file_size + = raw_co_get_allocated_file_size, .create_opts = &raw_create_opts, }; @@ -935,9 +935,7 @@ static BlockDriver bdrv_host_device = { .bdrv_co_getlength = raw_co_getlength, .has_variable_length = true, - - .bdrv_get_allocated_file_size - = raw_get_allocated_file_size, + .bdrv_co_get_allocated_file_size = raw_co_get_allocated_file_size, }; static void bdrv_file_init(void) |