mirror of https://github.com/xemu-project/xemu.git
block: Export blk_pwritev_part() in block-backend-io.h
Also convert it into a generated_co_wrapper. Signed-off-by: Alberto Faria <afaria@redhat.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Hanna Reitz <hreitz@redhat.com> Message-Id: <20220705161527.1054072-10-afaria@redhat.com> Signed-off-by: Hanna Reitz <hreitz@redhat.com>
This commit is contained in:
parent
d1d3fc3d1d
commit
09cca043bf
|
@ -1403,20 +1403,6 @@ int coroutine_fn blk_co_pwritev(BlockBackend *blk, int64_t offset,
|
|||
return blk_co_pwritev_part(blk, offset, bytes, qiov, 0, flags);
|
||||
}
|
||||
|
||||
static int coroutine_fn blk_pwritev_part(BlockBackend *blk, int64_t offset,
|
||||
int64_t bytes,
|
||||
QEMUIOVector *qiov, size_t qiov_offset,
|
||||
BdrvRequestFlags flags)
|
||||
{
|
||||
int ret;
|
||||
|
||||
blk_inc_in_flight(blk);
|
||||
ret = blk_do_pwritev_part(blk, offset, bytes, qiov, qiov_offset, flags);
|
||||
blk_dec_in_flight(blk);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
typedef struct BlkRwCo {
|
||||
BlockBackend *blk;
|
||||
int64_t offset;
|
||||
|
|
|
@ -107,11 +107,6 @@ bdrv_common_block_status_above(BlockDriverState *bs,
|
|||
int generated_co_wrapper
|
||||
nbd_do_establish_connection(BlockDriverState *bs, bool blocking, Error **errp);
|
||||
|
||||
int generated_co_wrapper
|
||||
blk_do_pwritev_part(BlockBackend *blk, int64_t offset, int64_t bytes,
|
||||
QEMUIOVector *qiov, size_t qiov_offset,
|
||||
BdrvRequestFlags flags);
|
||||
|
||||
int generated_co_wrapper
|
||||
blk_do_ioctl(BlockBackend *blk, unsigned long int req, void *buf);
|
||||
|
||||
|
|
|
@ -120,6 +120,10 @@ int generated_co_wrapper blk_preadv(BlockBackend *blk, int64_t offset,
|
|||
int coroutine_fn blk_co_preadv(BlockBackend *blk, int64_t offset,
|
||||
int64_t bytes, QEMUIOVector *qiov,
|
||||
BdrvRequestFlags flags);
|
||||
int generated_co_wrapper blk_pwritev_part(BlockBackend *blk, int64_t offset,
|
||||
int64_t bytes, QEMUIOVector *qiov,
|
||||
size_t qiov_offset,
|
||||
BdrvRequestFlags flags);
|
||||
int coroutine_fn blk_co_pwritev_part(BlockBackend *blk, int64_t offset,
|
||||
int64_t bytes,
|
||||
QEMUIOVector *qiov, size_t qiov_offset,
|
||||
|
|
|
@ -183,6 +183,21 @@ static void test_sync_op_blk_preadv_part(BlockBackend *blk)
|
|||
g_assert_cmpint(ret, ==, -EIO);
|
||||
}
|
||||
|
||||
static void test_sync_op_blk_pwritev_part(BlockBackend *blk)
|
||||
{
|
||||
uint8_t buf[512] = { 0 };
|
||||
QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, sizeof(buf));
|
||||
int ret;
|
||||
|
||||
/* Success */
|
||||
ret = blk_pwritev_part(blk, 0, sizeof(buf), &qiov, 0, 0);
|
||||
g_assert_cmpint(ret, ==, 0);
|
||||
|
||||
/* Early error: Negative offset */
|
||||
ret = blk_pwritev_part(blk, -2, sizeof(buf), &qiov, 0, 0);
|
||||
g_assert_cmpint(ret, ==, -EIO);
|
||||
}
|
||||
|
||||
static void test_sync_op_load_vmstate(BdrvChild *c)
|
||||
{
|
||||
uint8_t buf[512];
|
||||
|
@ -358,6 +373,10 @@ const SyncOpTest sync_op_tests[] = {
|
|||
.name = "/sync-op/preadv_part",
|
||||
.fn = NULL,
|
||||
.blkfn = test_sync_op_blk_preadv_part,
|
||||
}, {
|
||||
.name = "/sync-op/pwritev_part",
|
||||
.fn = NULL,
|
||||
.blkfn = test_sync_op_blk_pwritev_part,
|
||||
}, {
|
||||
.name = "/sync-op/load_vmstate",
|
||||
.fn = test_sync_op_load_vmstate,
|
||||
|
|
Loading…
Reference in New Issue