diff options
author | Alberto Faria | 2022-07-05 18:15:20 +0200 |
---|---|---|
committer | Hanna Reitz | 2022-07-12 12:14:56 +0200 |
commit | 1c95dc914a0218e58dc8d857b736b966a721d96d (patch) | |
tree | a41d24d9d4eab5d32f6dd684dfabb784b5ec1158 | |
parent | block: Add blk_co_pwrite_compressed() (diff) | |
download | qemu-1c95dc914a0218e58dc8d857b736b966a721d96d.tar.gz qemu-1c95dc914a0218e58dc8d857b736b966a721d96d.tar.xz qemu-1c95dc914a0218e58dc8d857b736b966a721d96d.zip |
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>
-rw-r--r-- | block/block-backend.c | 8 | ||||
-rw-r--r-- | include/sysemu/block-backend-io.h | 5 | ||||
-rw-r--r-- | tests/unit/test-block-iothread.c | 17 |
3 files changed, 20 insertions, 10 deletions
diff --git a/block/block-backend.c b/block/block-backend.c index f07a76aa5a..85661d1823 100644 --- a/block/block-backend.c +++ b/block/block-backend.c @@ -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(); diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backend-io.h index 8500a63102..346ca47fed 100644 --- a/include/sysemu/block-backend-io.h +++ b/include/sysemu/block-backend-io.h @@ -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, diff --git a/tests/unit/test-block-iothread.c b/tests/unit/test-block-iothread.c index 3a46886784..bb9230a4b4 100644 --- a/tests/unit/test-block-iothread.c +++ b/tests/unit/test-block-iothread.c @@ -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]; @@ -396,6 +409,10 @@ const SyncOpTest sync_op_tests[] = { .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, }, { |