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);
    }
}

Reply via email to