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);
|
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 {
|
typedef struct BlkRwCo {
|
||||||
BlockBackend *blk;
|
BlockBackend *blk;
|
||||||
int64_t offset;
|
int64_t offset;
|
||||||
|
|
|
@ -107,11 +107,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_pwritev_part(BlockBackend *blk, int64_t offset, int64_t bytes,
|
|
||||||
QEMUIOVector *qiov, size_t qiov_offset,
|
|
||||||
BdrvRequestFlags flags);
|
|
||||||
|
|
||||||
int generated_co_wrapper
|
int generated_co_wrapper
|
||||||
blk_do_ioctl(BlockBackend *blk, unsigned long int req, void *buf);
|
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,
|
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);
|
||||||
|
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,
|
int coroutine_fn blk_co_pwritev_part(BlockBackend *blk, int64_t offset,
|
||||||
int64_t bytes,
|
int64_t bytes,
|
||||||
QEMUIOVector *qiov, size_t qiov_offset,
|
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);
|
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)
|
static void test_sync_op_load_vmstate(BdrvChild *c)
|
||||||
{
|
{
|
||||||
uint8_t buf[512];
|
uint8_t buf[512];
|
||||||
|
@ -358,6 +373,10 @@ const SyncOpTest sync_op_tests[] = {
|
||||||
.name = "/sync-op/preadv_part",
|
.name = "/sync-op/preadv_part",
|
||||||
.fn = NULL,
|
.fn = NULL,
|
||||||
.blkfn = test_sync_op_blk_preadv_part,
|
.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",
|
.name = "/sync-op/load_vmstate",
|
||||||
.fn = test_sync_op_load_vmstate,
|
.fn = test_sync_op_load_vmstate,
|
||||||
|
|
Loading…
Reference in New Issue