mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
block: Add blk_co_pwrite_compressed()
Also convert blk_pwrite_compressed() 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-12-afaria@redhat.com> Signed-off-by: Hanna Reitz <hreitz@redhat.com>
This commit is contained in:
parent
0cadf2c8a3
commit
2c9715fa28
@ -2314,13 +2314,13 @@ int coroutine_fn blk_co_pwrite_zeroes(BlockBackend *blk, int64_t offset,
|
||||
flags | BDRV_REQ_ZERO_WRITE);
|
||||
}
|
||||
|
||||
int blk_pwrite_compressed(BlockBackend *blk, int64_t offset, int64_t bytes,
|
||||
const void *buf)
|
||||
int coroutine_fn blk_co_pwrite_compressed(BlockBackend *blk, int64_t offset,
|
||||
int64_t bytes, const void *buf)
|
||||
{
|
||||
QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, bytes);
|
||||
IO_OR_GS_CODE();
|
||||
return blk_pwritev_part(blk, offset, bytes, &qiov, 0,
|
||||
BDRV_REQ_WRITE_COMPRESSED);
|
||||
return blk_co_pwritev_part(blk, offset, bytes, &qiov, 0,
|
||||
BDRV_REQ_WRITE_COMPRESSED);
|
||||
}
|
||||
|
||||
int blk_truncate(BlockBackend *blk, int64_t offset, bool exact,
|
||||
|
@ -167,8 +167,11 @@ int blk_flush(BlockBackend *blk);
|
||||
|
||||
int blk_ioctl(BlockBackend *blk, unsigned long int req, void *buf);
|
||||
|
||||
int blk_pwrite_compressed(BlockBackend *blk, int64_t offset, int64_t bytes,
|
||||
const void *buf);
|
||||
int generated_co_wrapper blk_pwrite_compressed(BlockBackend *blk,
|
||||
int64_t offset, int64_t bytes,
|
||||
const void *buf);
|
||||
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);
|
||||
|
@ -198,6 +198,20 @@ static void test_sync_op_blk_pwritev_part(BlockBackend *blk)
|
||||
g_assert_cmpint(ret, ==, -EIO);
|
||||
}
|
||||
|
||||
static void test_sync_op_blk_pwrite_compressed(BlockBackend *blk)
|
||||
{
|
||||
uint8_t buf[512] = { 0 };
|
||||
int ret;
|
||||
|
||||
/* Late error: Not supported */
|
||||
ret = blk_pwrite_compressed(blk, 0, sizeof(buf), buf);
|
||||
g_assert_cmpint(ret, ==, -ENOTSUP);
|
||||
|
||||
/* Early error: Negative offset */
|
||||
ret = blk_pwrite_compressed(blk, -2, sizeof(buf), buf);
|
||||
g_assert_cmpint(ret, ==, -EIO);
|
||||
}
|
||||
|
||||
static void test_sync_op_load_vmstate(BdrvChild *c)
|
||||
{
|
||||
uint8_t buf[512];
|
||||
@ -377,6 +391,10 @@ const SyncOpTest sync_op_tests[] = {
|
||||
.name = "/sync-op/pwritev_part",
|
||||
.fn = NULL,
|
||||
.blkfn = test_sync_op_blk_pwritev_part,
|
||||
}, {
|
||||
.name = "/sync-op/pwrite_compressed",
|
||||
.fn = NULL,
|
||||
.blkfn = test_sync_op_blk_pwrite_compressed,
|
||||
}, {
|
||||
.name = "/sync-op/load_vmstate",
|
||||
.fn = test_sync_op_load_vmstate,
|
||||
|
Loading…
Reference in New Issue
Block a user