Message ID | 20220517113837.199696-3-afaria@redhat.com |
---|---|
State | New |
Headers | show |
Series | Make block-backend-io.h API more consistent | expand |
On 5/17/22 13:38, Alberto Faria wrote: > Implement them using generated_co_wrapper. > > Signed-off-by: Alberto Faria <afaria@redhat.com> > --- > include/sysemu/block-backend-io.h | 6 +++++ > tests/unit/test-block-iothread.c | 42 ++++++++++++++++++++++++++++++- > 2 files changed, 47 insertions(+), 1 deletion(-) Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> > diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backend-io.h > index 0804ce1c1d..3b548a8ae1 100644 > --- a/include/sysemu/block-backend-io.h > +++ b/include/sysemu/block-backend-io.h > @@ -108,6 +108,9 @@ int generated_co_wrapper blk_pread(BlockBackend *blk, int64_t offset, > int generated_co_wrapper blk_pwrite(BlockBackend *blk, int64_t offset, > int64_t bytes, const void *buf, > BdrvRequestFlags flags); > +int generated_co_wrapper blk_preadv(BlockBackend *blk, int64_t offset, > + int64_t bytes, QEMUIOVector *qiov, > + BdrvRequestFlags flags); > int coroutine_fn blk_co_preadv(BlockBackend *blk, int64_t offset, > int64_t bytes, QEMUIOVector *qiov, > BdrvRequestFlags flags); > @@ -115,6 +118,9 @@ int coroutine_fn blk_co_pwritev_part(BlockBackend *blk, int64_t offset, > int64_t bytes, > QEMUIOVector *qiov, size_t qiov_offset, > BdrvRequestFlags flags); > +int generated_co_wrapper blk_pwritev(BlockBackend *blk, int64_t offset, > + int64_t bytes, QEMUIOVector *qiov, > + BdrvRequestFlags flags); > int coroutine_fn blk_co_pwritev(BlockBackend *blk, int64_t offset, > int64_t bytes, QEMUIOVector *qiov, > BdrvRequestFlags flags); > diff --git a/tests/unit/test-block-iothread.c b/tests/unit/test-block-iothread.c > index 0ced5333ff..b9c5da3a87 100644 > --- a/tests/unit/test-block-iothread.c > +++ b/tests/unit/test-block-iothread.c > @@ -138,6 +138,36 @@ static void test_sync_op_blk_pwrite(BlockBackend *blk) > g_assert_cmpint(ret, ==, -EIO); > } > > +static void test_sync_op_blk_preadv(BlockBackend *blk) > +{ > + uint8_t buf[512]; > + QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, sizeof(buf)); > + int ret; > + > + /* Success */ > + ret = blk_preadv(blk, 0, sizeof(buf), &qiov, 0); > + g_assert_cmpint(ret, ==, 0); > + > + /* Early error: Negative offset */ > + ret = blk_preadv(blk, -2, sizeof(buf), &qiov, 0); > + g_assert_cmpint(ret, ==, -EIO); > +} > + > +static void test_sync_op_blk_pwritev(BlockBackend *blk) > +{ > + uint8_t buf[512] = { 0 }; > + QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, sizeof(buf)); > + int ret; > + > + /* Success */ > + ret = blk_pwritev(blk, 0, sizeof(buf), &qiov, 0); > + g_assert_cmpint(ret, ==, 0); > + > + /* Early error: Negative offset */ > + ret = blk_pwritev(blk, -2, sizeof(buf), &qiov, 0); > + g_assert_cmpint(ret, ==, -EIO); > +} > + > static void test_sync_op_load_vmstate(BdrvChild *c) > { > uint8_t buf[512]; > @@ -301,6 +331,14 @@ const SyncOpTest sync_op_tests[] = { > .name = "/sync-op/pwrite", > .fn = test_sync_op_pwrite, > .blkfn = test_sync_op_blk_pwrite, > + }, { > + .name = "/sync-op/preadv", > + .fn = NULL, > + .blkfn = test_sync_op_blk_preadv, > + }, { > + .name = "/sync-op/pwritev", > + .fn = NULL, > + .blkfn = test_sync_op_blk_pwritev, > }, { > .name = "/sync-op/load_vmstate", > .fn = test_sync_op_load_vmstate, > @@ -349,7 +387,9 @@ static void test_sync_op(const void *opaque) > > blk_set_aio_context(blk, ctx, &error_abort); > aio_context_acquire(ctx); > - t->fn(c); > + if (t->fn) { > + t->fn(c); > + } > if (t->blkfn) { > t->blkfn(blk); > }
On 17.05.22 13:38, Alberto Faria wrote: > Implement them using generated_co_wrapper. > > Signed-off-by: Alberto Faria <afaria@redhat.com> > --- > include/sysemu/block-backend-io.h | 6 +++++ > tests/unit/test-block-iothread.c | 42 ++++++++++++++++++++++++++++++- > 2 files changed, 47 insertions(+), 1 deletion(-) Reviewed-by: Hanna Reitz <hreitz@redhat.com>
diff --git a/include/sysemu/block-backend-io.h b/include/sysemu/block-backend-io.h index 0804ce1c1d..3b548a8ae1 100644 --- a/include/sysemu/block-backend-io.h +++ b/include/sysemu/block-backend-io.h @@ -108,6 +108,9 @@ int generated_co_wrapper blk_pread(BlockBackend *blk, int64_t offset, int generated_co_wrapper blk_pwrite(BlockBackend *blk, int64_t offset, int64_t bytes, const void *buf, BdrvRequestFlags flags); +int generated_co_wrapper blk_preadv(BlockBackend *blk, int64_t offset, + int64_t bytes, QEMUIOVector *qiov, + BdrvRequestFlags flags); int coroutine_fn blk_co_preadv(BlockBackend *blk, int64_t offset, int64_t bytes, QEMUIOVector *qiov, BdrvRequestFlags flags); @@ -115,6 +118,9 @@ int coroutine_fn blk_co_pwritev_part(BlockBackend *blk, int64_t offset, int64_t bytes, QEMUIOVector *qiov, size_t qiov_offset, BdrvRequestFlags flags); +int generated_co_wrapper blk_pwritev(BlockBackend *blk, int64_t offset, + int64_t bytes, QEMUIOVector *qiov, + BdrvRequestFlags flags); int coroutine_fn blk_co_pwritev(BlockBackend *blk, int64_t offset, int64_t bytes, QEMUIOVector *qiov, BdrvRequestFlags flags); diff --git a/tests/unit/test-block-iothread.c b/tests/unit/test-block-iothread.c index 0ced5333ff..b9c5da3a87 100644 --- a/tests/unit/test-block-iothread.c +++ b/tests/unit/test-block-iothread.c @@ -138,6 +138,36 @@ static void test_sync_op_blk_pwrite(BlockBackend *blk) g_assert_cmpint(ret, ==, -EIO); } +static void test_sync_op_blk_preadv(BlockBackend *blk) +{ + uint8_t buf[512]; + QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, sizeof(buf)); + int ret; + + /* Success */ + ret = blk_preadv(blk, 0, sizeof(buf), &qiov, 0); + g_assert_cmpint(ret, ==, 0); + + /* Early error: Negative offset */ + ret = blk_preadv(blk, -2, sizeof(buf), &qiov, 0); + g_assert_cmpint(ret, ==, -EIO); +} + +static void test_sync_op_blk_pwritev(BlockBackend *blk) +{ + uint8_t buf[512] = { 0 }; + QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, buf, sizeof(buf)); + int ret; + + /* Success */ + ret = blk_pwritev(blk, 0, sizeof(buf), &qiov, 0); + g_assert_cmpint(ret, ==, 0); + + /* Early error: Negative offset */ + ret = blk_pwritev(blk, -2, sizeof(buf), &qiov, 0); + g_assert_cmpint(ret, ==, -EIO); +} + static void test_sync_op_load_vmstate(BdrvChild *c) { uint8_t buf[512]; @@ -301,6 +331,14 @@ const SyncOpTest sync_op_tests[] = { .name = "/sync-op/pwrite", .fn = test_sync_op_pwrite, .blkfn = test_sync_op_blk_pwrite, + }, { + .name = "/sync-op/preadv", + .fn = NULL, + .blkfn = test_sync_op_blk_preadv, + }, { + .name = "/sync-op/pwritev", + .fn = NULL, + .blkfn = test_sync_op_blk_pwritev, }, { .name = "/sync-op/load_vmstate", .fn = test_sync_op_load_vmstate, @@ -349,7 +387,9 @@ static void test_sync_op(const void *opaque) blk_set_aio_context(blk, ctx, &error_abort); aio_context_acquire(ctx); - t->fn(c); + if (t->fn) { + t->fn(c); + } if (t->blkfn) { t->blkfn(blk); }
Implement them using generated_co_wrapper. Signed-off-by: Alberto Faria <afaria@redhat.com> --- include/sysemu/block-backend-io.h | 6 +++++ tests/unit/test-block-iothread.c | 42 ++++++++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-)