mirror of https://github.com/xemu-project/xemu.git
block: Mark bdrv_co_pwrite_sync() and callers GRAPH_RDLOCK
This adds GRAPH_RDLOCK annotations to declare that callers of bdrv_co_pwrite_sync() 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-13-kwolf@redhat.com> Reviewed-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
b9b10c35e5
commit
b24a4c41ba
|
@ -933,8 +933,7 @@ int coroutine_fn bdrv_co_pwrite_sync(BdrvChild *child, int64_t offset,
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
IO_CODE();
|
IO_CODE();
|
||||||
|
assert_bdrv_graph_readable();
|
||||||
assume_graph_lock(); /* FIXME */
|
|
||||||
|
|
||||||
ret = bdrv_co_pwrite(child, offset, bytes, buf, flags);
|
ret = bdrv_co_pwrite(child, offset, bytes, buf, flags);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|
|
@ -893,7 +893,7 @@ int qcow2_inc_refcounts_imrt(BlockDriverState *bs, BdrvCheckResult *res,
|
||||||
int qcow2_change_refcount_order(BlockDriverState *bs, int refcount_order,
|
int qcow2_change_refcount_order(BlockDriverState *bs, int refcount_order,
|
||||||
BlockDriverAmendStatusCB *status_cb,
|
BlockDriverAmendStatusCB *status_cb,
|
||||||
void *cb_opaque, Error **errp);
|
void *cb_opaque, Error **errp);
|
||||||
int coroutine_fn qcow2_shrink_reftable(BlockDriverState *bs);
|
int coroutine_fn GRAPH_RDLOCK qcow2_shrink_reftable(BlockDriverState *bs);
|
||||||
int64_t qcow2_get_last_cluster(BlockDriverState *bs, int64_t size);
|
int64_t qcow2_get_last_cluster(BlockDriverState *bs, int64_t size);
|
||||||
int coroutine_fn qcow2_detect_metadata_preallocation(BlockDriverState *bs);
|
int coroutine_fn qcow2_detect_metadata_preallocation(BlockDriverState *bs);
|
||||||
|
|
||||||
|
|
|
@ -60,9 +60,10 @@ int co_wrapper_mixed_bdrv_rdlock
|
||||||
bdrv_pwrite_sync(BdrvChild *child, int64_t offset, int64_t bytes,
|
bdrv_pwrite_sync(BdrvChild *child, int64_t offset, int64_t bytes,
|
||||||
const void *buf, BdrvRequestFlags flags);
|
const void *buf, BdrvRequestFlags flags);
|
||||||
|
|
||||||
int coroutine_fn bdrv_co_pwrite_sync(BdrvChild *child, int64_t offset,
|
int coroutine_fn GRAPH_RDLOCK
|
||||||
int64_t bytes, const void *buf,
|
bdrv_co_pwrite_sync(BdrvChild *child, int64_t offset, int64_t bytes,
|
||||||
BdrvRequestFlags flags);
|
const void *buf, BdrvRequestFlags flags);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Efficiently zero a region of the disk image. Note that this is a regular
|
* Efficiently zero a region of the disk image. Note that this is a regular
|
||||||
* I/O request like read or write and should have a reasonable size. This
|
* I/O request like read or write and should have a reasonable size. This
|
||||||
|
|
Loading…
Reference in New Issue