diff options
| author | Stefan Hajnoczi | 2022-10-13 20:59:02 +0200 |
|---|---|---|
| committer | Stefan Hajnoczi | 2022-10-26 20:56:42 +0200 |
| commit | f4ec04bae9577eaa55ac35f3971dc3086a4a9192 (patch) | |
| tree | fbb0a27e7d6c59e3593838e77c1cbfeb43703c03 /include/block | |
| parent | block: add BDRV_REQ_REGISTERED_BUF request flag (diff) | |
| download | qemu-f4ec04bae9577eaa55ac35f3971dc3086a4a9192.tar.gz qemu-f4ec04bae9577eaa55ac35f3971dc3086a4a9192.tar.xz qemu-f4ec04bae9577eaa55ac35f3971dc3086a4a9192.zip | |
block: return errors from bdrv_register_buf()
Registering an I/O buffer is only a performance optimization hint but it
is still necessary to return errors when it fails.
Later patches will need to detect errors when registering buffers but an
immediate advantage is that error_report() calls are no longer needed in
block driver .bdrv_register_buf() functions.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 20221013185908.1297568-8-stefanha@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'include/block')
| -rw-r--r-- | include/block/block-global-state.h | 5 | ||||
| -rw-r--r-- | include/block/block_int-common.h | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/include/block/block-global-state.h b/include/block/block-global-state.h index 7901f35863..eba4ed23b4 100644 --- a/include/block/block-global-state.h +++ b/include/block/block-global-state.h @@ -246,8 +246,11 @@ void bdrv_del_child(BlockDriverState *parent, BdrvChild *child, Error **errp); * * Buffers must not overlap and they must be unregistered with the same <host, * size> values that they were registered with. + * + * Returns: true on success, false on failure */ -void bdrv_register_buf(BlockDriverState *bs, void *host, size_t size); +bool bdrv_register_buf(BlockDriverState *bs, void *host, size_t size, + Error **errp); void bdrv_unregister_buf(BlockDriverState *bs, void *host, size_t size); void bdrv_cancel_in_flight(BlockDriverState *bs); diff --git a/include/block/block_int-common.h b/include/block/block_int-common.h index 19798d0e77..9c569be162 100644 --- a/include/block/block_int-common.h +++ b/include/block/block_int-common.h @@ -433,8 +433,11 @@ struct BlockDriver { * that it can do IOMMU mapping with VFIO etc., in order to get better * performance. In the case of VFIO drivers, this callback is used to do * DMA mapping for hot buffers. + * + * Returns: true on success, false on failure */ - void (*bdrv_register_buf)(BlockDriverState *bs, void *host, size_t size); + bool (*bdrv_register_buf)(BlockDriverState *bs, void *host, size_t size, + Error **errp); void (*bdrv_unregister_buf)(BlockDriverState *bs, void *host, size_t size); /* |
