attached generated file
--
Best regards,
Vladimir
/*
* File is generated by scripts/coroutine-wrapper.py
*/
#include "qemu/osdep.h"
#include "block/block_int.h"
/*
* Wrappers for bdrv_co_check
*/
typedef struct bdrv_co_check__ArgumentsPack {
BlockDriverState *bs;
BdrvCheckResult *res;
BdrvCheckMode fix;
int _ret;
bool _in_progress;
} bdrv_co_check__ArgumentsPack;
static void bdrv_co_check__entry(void *opaque)
{
bdrv_co_check__ArgumentsPack *pack = opaque;
pack->_ret = bdrv_co_check(pack->bs, pack->res, pack->fix);
pack->_in_progress = false;
aio_wait_kick();
}
int bdrv_check(BlockDriverState *bs, BdrvCheckResult *res, BdrvCheckMode fix)
{
if (qemu_in_coroutine()) {
/* Fast-path if already in coroutine context */
return bdrv_co_check(bs, res, fix);
} else {
bdrv_co_check__ArgumentsPack pack = {
.bs = bs,
.res = res,
.fix = fix,
._in_progress = true,
};
Coroutine *co = qemu_coroutine_create(bdrv_co_check__entry, &pack);
bdrv_coroutine_enter(bs, co);
BDRV_POLL_WHILE(bs, pack._in_progress);
return pack._ret;
}
}
/*
* Wrappers for bdrv_co_invalidate_cache
*/
typedef struct bdrv_co_invalidate_cache__ArgumentsPack {
BlockDriverState *bs;
Error **errp;
bool _in_progress;
} bdrv_co_invalidate_cache__ArgumentsPack;
static void bdrv_co_invalidate_cache__entry(void *opaque)
{
bdrv_co_invalidate_cache__ArgumentsPack *pack = opaque;
bdrv_co_invalidate_cache(pack->bs, pack->errp);
pack->_in_progress = false;
aio_wait_kick();
}
void bdrv_invalidate_cache(BlockDriverState *bs, Error **errp)
{
if (qemu_in_coroutine()) {
/* Fast-path if already in coroutine context */
bdrv_co_invalidate_cache(bs, errp);
} else {
bdrv_co_invalidate_cache__ArgumentsPack pack = {
.bs = bs,
.errp = errp,
._in_progress = true,
};
Coroutine *co = qemu_coroutine_create(bdrv_co_invalidate_cache__entry, &pack);
bdrv_coroutine_enter(bs, co);
BDRV_POLL_WHILE(bs, pack._in_progress);
}
}