[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 2/9] block/io: refactor bdrv_co_ioctl: move aio stuff to correspo
From: |
Vladimir Sementsov-Ogievskiy |
Subject: |
[PATCH 2/9] block/io: refactor bdrv_co_ioctl: move aio stuff to corresponding block |
Date: |
Wed, 8 Apr 2020 12:30:44 +0300 |
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
---
block/io.c | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/block/io.c b/block/io.c
index a9f1a3e93e..29e53271b6 100644
--- a/block/io.c
+++ b/block/io.c
@@ -3126,31 +3126,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 for-5.0? 0/9] block/io: safer inc/dec in_flight sections, Vladimir Sementsov-Ogievskiy, 2020/04/08
- [PATCH 1/9] block/io: refactor bdrv_is_allocated_above to run only one coroutine, Vladimir Sementsov-Ogievskiy, 2020/04/08
- [PATCH 2/9] block/io: refactor bdrv_co_ioctl: move aio stuff to corresponding block,
Vladimir Sementsov-Ogievskiy <=
- [PATCH 7/9] block/io: add bdrv_do_pwrite_zeroes, Vladimir Sementsov-Ogievskiy, 2020/04/08
- [PATCH 6/9] block/io: expand in_flight inc/dec section: block-status, Vladimir Sementsov-Ogievskiy, 2020/04/08
- [PATCH 8/9] block/io: move bdrv_make_zero under block-status, Vladimir Sementsov-Ogievskiy, 2020/04/08
- [PATCH 3/9] block/io: move flush and pdiscard stuff down, Vladimir Sementsov-Ogievskiy, 2020/04/08
- [PATCH 9/9] block/io: expand in_flight inc/dec section: bdrv_make_zero, Vladimir Sementsov-Ogievskiy, 2020/04/08