[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 2/9] block/io: refactor bdrv_co_ioctl: move aio stuff to corre
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH v2 2/9] block/io: refactor bdrv_co_ioctl: move aio stuff to corresponding block |
Date: |
Mon, 27 Apr 2020 17:39:00 +0300 |
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
---
block/io.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/block/io.c b/block/io.c
index 94ab8eaa0f..880871e691 100644
--- a/block/io.c
+++ b/block/io.c
@@ -3125,31 +3125,38 @@ int bdrv_pdiscard(BdrvChild *child, int64_t offset,
int64_t bytes)
int bdrv_co_ioctl(BlockDriverState *bs, int req, void *buf)
{
+ int ret;
BlockDriver *drv = bs->drv;
- CoroutineIOCompletion co = {
- .coroutine = qemu_coroutine_self(),
- };
- BlockAIOCB *acb;
bdrv_inc_in_flight(bs);
+
if (!drv || (!drv->bdrv_aio_ioctl && !drv->bdrv_co_ioctl)) {
- co.ret = -ENOTSUP;
+ ret = -ENOTSUP;
goto out;
}
if (drv->bdrv_co_ioctl) {
- co.ret = drv->bdrv_co_ioctl(bs, req, buf);
+ ret = drv->bdrv_co_ioctl(bs, req, buf);
} else {
+ CoroutineIOCompletion co = {
+ .coroutine = qemu_coroutine_self(),
+ };
+ BlockAIOCB *acb;
+
acb = drv->bdrv_aio_ioctl(bs, req, buf, bdrv_co_io_em_complete, &co);
if (!acb) {
- co.ret = -ENOTSUP;
+ ret = -ENOTSUP;
goto out;
}
+
qemu_coroutine_yield();
+ ret = co.ret;
}
+
out:
bdrv_dec_in_flight(bs);
- return co.ret;
+
+ return ret;
}
void *qemu_blockalign(BlockDriverState *bs, size_t size)
--
2.21.0
- [PATCH v2 0/9] block/io: safer inc/dec in_flight sections, Vladimir Sementsov-Ogievskiy, 2020/04/27
- [PATCH v2 1/9] block/io: refactor bdrv_is_allocated_above to run only one coroutine, Vladimir Sementsov-Ogievskiy, 2020/04/27
- [PATCH v2 8/9] block/io: move bdrv_make_zero under block-status, Vladimir Sementsov-Ogievskiy, 2020/04/27
- [PATCH v2 3/9] block/io: move flush and pdiscard stuff down, Vladimir Sementsov-Ogievskiy, 2020/04/27
- [PATCH v2 6/9] block/io: expand in_flight inc/dec section: block-status, Vladimir Sementsov-Ogievskiy, 2020/04/27
- [PATCH v2 4/9] block/io: move bdrv_rw_co_entry and friends down, Vladimir Sementsov-Ogievskiy, 2020/04/27
- [PATCH v2 5/9] block/io: expand in_flight inc/dec section: simple cases, Vladimir Sementsov-Ogievskiy, 2020/04/27
- [PATCH v2 9/9] block/io: expand in_flight inc/dec section: bdrv_make_zero, Vladimir Sementsov-Ogievskiy, 2020/04/27
- [PATCH v2 2/9] block/io: refactor bdrv_co_ioctl: move aio stuff to corresponding block,
Vladimir Sementsov-Ogievskiy <=
- [PATCH v2 7/9] block/io: add bdrv_do_pwrite_zeroes, Vladimir Sementsov-Ogievskiy, 2020/04/27