mirror of https://github.com/proxmox/mirror_qemu
block: Implement blk_{pread,pwrite}() using generated_co_wrapper
We need to add include/sysemu/block-backend-io.h to the inputs of the block-gen.c target defined in block/meson.build. Signed-off-by: Alberto Faria <afaria@redhat.com> Reviewed-by: Hanna Reitz <hreitz@redhat.com> Message-Id: <20220705161527.1054072-7-afaria@redhat.com> Signed-off-by: Hanna Reitz <hreitz@redhat.com>master
parent
7d252ba5ca
commit
facbaad946
|
@ -1563,29 +1563,6 @@ BlockAIOCB *blk_aio_pwrite_zeroes(BlockBackend *blk, int64_t offset,
|
||||||
flags | BDRV_REQ_ZERO_WRITE, cb, opaque);
|
flags | BDRV_REQ_ZERO_WRITE, cb, opaque);
|
||||||
}
|
}
|
||||||
|
|
||||||
int blk_pread(BlockBackend *blk, int64_t offset, int64_t bytes, void *buf,
|
|
||||||
BdrvRequestFlags flags)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, bytes);
|
|
||||||
IO_OR_GS_CODE();
|
|
||||||
|
|
||||||
blk_inc_in_flight(blk);
|
|
||||||
ret = blk_do_preadv(blk, offset, bytes, &qiov, flags);
|
|
||||||
blk_dec_in_flight(blk);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
int blk_pwrite(BlockBackend *blk, int64_t offset, int64_t bytes,
|
|
||||||
const void *buf, BdrvRequestFlags flags)
|
|
||||||
{
|
|
||||||
QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, bytes);
|
|
||||||
IO_OR_GS_CODE();
|
|
||||||
|
|
||||||
return blk_pwritev_part(blk, offset, bytes, &qiov, 0, flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
int64_t blk_getlength(BlockBackend *blk)
|
int64_t blk_getlength(BlockBackend *blk)
|
||||||
{
|
{
|
||||||
IO_CODE();
|
IO_CODE();
|
||||||
|
|
|
@ -112,10 +112,6 @@ bdrv_common_block_status_above(BlockDriverState *bs,
|
||||||
int generated_co_wrapper
|
int generated_co_wrapper
|
||||||
nbd_do_establish_connection(BlockDriverState *bs, bool blocking, Error **errp);
|
nbd_do_establish_connection(BlockDriverState *bs, bool blocking, Error **errp);
|
||||||
|
|
||||||
int generated_co_wrapper
|
|
||||||
blk_do_preadv(BlockBackend *blk, int64_t offset, int64_t bytes,
|
|
||||||
QEMUIOVector *qiov, BdrvRequestFlags flags);
|
|
||||||
|
|
||||||
int generated_co_wrapper
|
int generated_co_wrapper
|
||||||
blk_do_pwritev_part(BlockBackend *blk, int64_t offset, int64_t bytes,
|
blk_do_pwritev_part(BlockBackend *blk, int64_t offset, int64_t bytes,
|
||||||
QEMUIOVector *qiov, size_t qiov_offset,
|
QEMUIOVector *qiov, size_t qiov_offset,
|
||||||
|
|
|
@ -136,6 +136,7 @@ block_gen_c = custom_target('block-gen.c',
|
||||||
input: files(
|
input: files(
|
||||||
'../include/block/block-io.h',
|
'../include/block/block-io.h',
|
||||||
'../include/block/block-global-state.h',
|
'../include/block/block-global-state.h',
|
||||||
|
'../include/sysemu/block-backend-io.h',
|
||||||
'coroutines.h'
|
'coroutines.h'
|
||||||
),
|
),
|
||||||
command: [wrapper_py, '@OUTPUT@', '@INPUT@'])
|
command: [wrapper_py, '@OUTPUT@', '@INPUT@'])
|
||||||
|
|
|
@ -101,10 +101,12 @@ int coroutine_fn blk_co_copy_range(BlockBackend *blk_in, int64_t off_in,
|
||||||
* the "I/O or GS" API.
|
* the "I/O or GS" API.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int blk_pread(BlockBackend *blk, int64_t offset, int64_t bytes, void *buf,
|
int generated_co_wrapper blk_pread(BlockBackend *blk, int64_t offset,
|
||||||
BdrvRequestFlags flags);
|
int64_t bytes, void *buf,
|
||||||
int blk_pwrite(BlockBackend *blk, int64_t offset, int64_t bytes,
|
BdrvRequestFlags flags);
|
||||||
const void *buf, BdrvRequestFlags flags);
|
int generated_co_wrapper blk_pwrite(BlockBackend *blk, int64_t offset,
|
||||||
|
int64_t bytes, const void *buf,
|
||||||
|
BdrvRequestFlags flags);
|
||||||
int coroutine_fn blk_co_preadv(BlockBackend *blk, int64_t offset,
|
int coroutine_fn blk_co_preadv(BlockBackend *blk, int64_t offset,
|
||||||
int64_t bytes, QEMUIOVector *qiov,
|
int64_t bytes, QEMUIOVector *qiov,
|
||||||
BdrvRequestFlags flags);
|
BdrvRequestFlags flags);
|
||||||
|
|
Loading…
Reference in New Issue