block: Mark bdrv_co_get_allocated_file_size() and callers GRAPH_RDLOCK
This adds GRAPH_RDLOCK annotations to declare that callers of bdrv_co_get_allocated_file_size() need to hold a reader lock for the graph. Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20230504115750.54437-14-kwolf@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
9c93652da6
commit
de335638a3
4
block.c
4
block.c
@ -5750,7 +5750,8 @@ exit:
|
|||||||
* sums the size of all data-bearing children. (This excludes backing
|
* sums the size of all data-bearing children. (This excludes backing
|
||||||
* children.)
|
* children.)
|
||||||
*/
|
*/
|
||||||
static int64_t coroutine_fn bdrv_sum_allocated_file_size(BlockDriverState *bs)
|
static int64_t coroutine_fn GRAPH_RDLOCK
|
||||||
|
bdrv_sum_allocated_file_size(BlockDriverState *bs)
|
||||||
{
|
{
|
||||||
BdrvChild *child;
|
BdrvChild *child;
|
||||||
int64_t child_size, sum = 0;
|
int64_t child_size, sum = 0;
|
||||||
@ -5778,6 +5779,7 @@ int64_t coroutine_fn bdrv_co_get_allocated_file_size(BlockDriverState *bs)
|
|||||||
{
|
{
|
||||||
BlockDriver *drv = bs->drv;
|
BlockDriver *drv = bs->drv;
|
||||||
IO_CODE();
|
IO_CODE();
|
||||||
|
assert_bdrv_graph_readable();
|
||||||
|
|
||||||
if (!drv) {
|
if (!drv) {
|
||||||
return -ENOMEDIUM;
|
return -ENOMEDIUM;
|
||||||
|
@ -2845,7 +2845,7 @@ static void vmdk_close(BlockDriverState *bs)
|
|||||||
error_free(s->migration_blocker);
|
error_free(s->migration_blocker);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int64_t coroutine_fn
|
static int64_t coroutine_fn GRAPH_RDLOCK
|
||||||
vmdk_co_get_allocated_file_size(BlockDriverState *bs)
|
vmdk_co_get_allocated_file_size(BlockDriverState *bs)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
@ -84,8 +84,11 @@ int64_t coroutine_mixed_fn bdrv_nb_sectors(BlockDriverState *bs);
|
|||||||
int64_t coroutine_fn GRAPH_RDLOCK bdrv_co_getlength(BlockDriverState *bs);
|
int64_t coroutine_fn GRAPH_RDLOCK bdrv_co_getlength(BlockDriverState *bs);
|
||||||
int64_t co_wrapper_mixed_bdrv_rdlock bdrv_getlength(BlockDriverState *bs);
|
int64_t co_wrapper_mixed_bdrv_rdlock bdrv_getlength(BlockDriverState *bs);
|
||||||
|
|
||||||
int64_t coroutine_fn bdrv_co_get_allocated_file_size(BlockDriverState *bs);
|
int64_t coroutine_fn GRAPH_RDLOCK
|
||||||
int64_t co_wrapper bdrv_get_allocated_file_size(BlockDriverState *bs);
|
bdrv_co_get_allocated_file_size(BlockDriverState *bs);
|
||||||
|
|
||||||
|
int64_t co_wrapper_bdrv_rdlock
|
||||||
|
bdrv_get_allocated_file_size(BlockDriverState *bs);
|
||||||
|
|
||||||
BlockMeasureInfo *bdrv_measure(BlockDriver *drv, QemuOpts *opts,
|
BlockMeasureInfo *bdrv_measure(BlockDriver *drv, QemuOpts *opts,
|
||||||
BlockDriverState *in_bs, Error **errp);
|
BlockDriverState *in_bs, Error **errp);
|
||||||
|
@ -685,7 +685,7 @@ struct BlockDriver {
|
|||||||
int64_t coroutine_fn GRAPH_RDLOCK_PTR (*bdrv_co_getlength)(
|
int64_t coroutine_fn GRAPH_RDLOCK_PTR (*bdrv_co_getlength)(
|
||||||
BlockDriverState *bs);
|
BlockDriverState *bs);
|
||||||
|
|
||||||
int64_t coroutine_fn (*bdrv_co_get_allocated_file_size)(
|
int64_t coroutine_fn GRAPH_RDLOCK_PTR (*bdrv_co_get_allocated_file_size)(
|
||||||
BlockDriverState *bs);
|
BlockDriverState *bs);
|
||||||
|
|
||||||
BlockMeasureInfo *(*bdrv_measure)(QemuOpts *opts, BlockDriverState *in_bs,
|
BlockMeasureInfo *(*bdrv_measure)(QemuOpts *opts, BlockDriverState *in_bs,
|
||||||
|
Loading…
Reference in New Issue
Block a user