mirror of https://github.com/xemu-project/xemu.git
block: Implement blk_pwrite_zeroes() using 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-13-afaria@redhat.com> Signed-off-by: Hanna Reitz <hreitz@redhat.com>
This commit is contained in:
parent
2c9715fa28
commit
1c95dc914a
|
@ -1411,14 +1411,6 @@ typedef struct BlkRwCo {
|
|||
BdrvRequestFlags flags;
|
||||
} BlkRwCo;
|
||||
|
||||
int blk_pwrite_zeroes(BlockBackend *blk, int64_t offset,
|
||||
int64_t bytes, BdrvRequestFlags flags)
|
||||
{
|
||||
IO_OR_GS_CODE();
|
||||
return blk_pwritev_part(blk, offset, bytes, NULL, 0,
|
||||
flags | BDRV_REQ_ZERO_WRITE);
|
||||
}
|
||||
|
||||
int blk_make_zero(BlockBackend *blk, BdrvRequestFlags flags)
|
||||
{
|
||||
GLOBAL_STATE_CODE();
|
||||
|
|
|
@ -173,8 +173,9 @@ int generated_co_wrapper blk_pwrite_compressed(BlockBackend *blk,
|
|||
int coroutine_fn blk_co_pwrite_compressed(BlockBackend *blk, int64_t offset,
|
||||
int64_t bytes, const void *buf);
|
||||
int blk_pdiscard(BlockBackend *blk, int64_t offset, int64_t bytes);
|
||||
int blk_pwrite_zeroes(BlockBackend *blk, int64_t offset,
|
||||
int64_t bytes, BdrvRequestFlags flags);
|
||||
int generated_co_wrapper blk_pwrite_zeroes(BlockBackend *blk, int64_t offset,
|
||||
int64_t bytes,
|
||||
BdrvRequestFlags flags);
|
||||
int coroutine_fn blk_co_pwrite_zeroes(BlockBackend *blk, int64_t offset,
|
||||
int64_t bytes, BdrvRequestFlags flags);
|
||||
int blk_truncate(BlockBackend *blk, int64_t offset, bool exact,
|
||||
|
|
|
@ -212,6 +212,19 @@ static void test_sync_op_blk_pwrite_compressed(BlockBackend *blk)
|
|||
g_assert_cmpint(ret, ==, -EIO);
|
||||
}
|
||||
|
||||
static void test_sync_op_blk_pwrite_zeroes(BlockBackend *blk)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* Success */
|
||||
ret = blk_pwrite_zeroes(blk, 0, 512, 0);
|
||||
g_assert_cmpint(ret, ==, 0);
|
||||
|
||||
/* Early error: Negative offset */
|
||||
ret = blk_pwrite_zeroes(blk, -2, 512, 0);
|
||||
g_assert_cmpint(ret, ==, -EIO);
|
||||
}
|
||||
|
||||
static void test_sync_op_load_vmstate(BdrvChild *c)
|
||||
{
|
||||
uint8_t buf[512];
|
||||
|
@ -395,6 +408,10 @@ const SyncOpTest sync_op_tests[] = {
|
|||
.name = "/sync-op/pwrite_compressed",
|
||||
.fn = NULL,
|
||||
.blkfn = test_sync_op_blk_pwrite_compressed,
|
||||
}, {
|
||||
.name = "/sync-op/pwrite_zeroes",
|
||||
.fn = NULL,
|
||||
.blkfn = test_sync_op_blk_pwrite_zeroes,
|
||||
}, {
|
||||
.name = "/sync-op/load_vmstate",
|
||||
.fn = test_sync_op_load_vmstate,
|
||||
|
|
Loading…
Reference in New Issue