static int blk_prw(BlockBackend *blk, int64_t offset, uint8_t *buf,

                   int64_t bytes, CoroutineEntry co_entry,

                   BdrvRequestFlags flags)

{

    AioContext *aio_context;

    QEMUIOVector qiov;

    struct iovec iov;

    Coroutine *co;

    BlkRwCo rwco;



    iov = (struct iovec) {

        .iov_base = buf,

        .iov_len = bytes,

    };

    qemu_iovec_init_external(&qiov, &iov, 1);



    rwco = (BlkRwCo) {

        .blk    = blk,

        .offset = offset,

        .qiov   = &qiov,

        .flags  = flags,

        .ret    = NOT_DONE,

    };



    co = qemu_coroutine_create(co_entry);

    qemu_coroutine_enter(co, &rwco);



    aio_context = blk_get_aio_context(blk);

    while (rwco.ret == NOT_DONE) {

        aio_poll(aio_context, true);

    }



    return rwco.ret;

}

static int blk_prw(BlockBackend *blk, int64_t offset, uint8_t *buf,

                   int64_t bytes, CoroutineEntry co_entry,

                   BdrvRequestFlags flags)

{

    AioContext *aio_context;

    QEMUIOVector qiov;

    struct iovec iov;

    Coroutine *co;

    BlkRwCo rwco;



    iov = (struct iovec) {

        .iov_base = buf,

        .iov_len = bytes,

    };

    qemu_iovec_init_external(&qiov, &iov, 1);



    rwco = (BlkRwCo) {

        .blk    = blk,

        .offset = offset,

        .qiov   = &qiov,

        .flags  = flags,

        .ret    = NOT_DONE,

    };



    co = qemu_coroutine_create(co_entry);

    qemu_coroutine_enter(co, &rwco);



    aio_context = blk_get_aio_context(blk);

    while (rwco.ret == NOT_DONE) {

        aio_poll(aio_context, true);

    }



    return rwco.ret;

}

    co = qemu_coroutine_create(co_entry);     qemu_coroutine_enter(co, &rwco);     co = qemu_coroutine_create(co_entry);
static int FUNC_0(BlockBackend *VAR_0, int64_t VAR_1, uint8_t *VAR_2,

                   int64_t VAR_3, CoroutineEntry VAR_4,

                   BdrvRequestFlags VAR_5)

{

    AioContext *aio_context;

    QEMUIOVector qiov;

    struct iovec VAR_6;

    Coroutine *co;

    BlkRwCo rwco;



    VAR_6 = (struct iovec) {

        .iov_base = VAR_2,

        .iov_len = VAR_3,

    };

    qemu_iovec_init_external(&qiov, &VAR_6, 1);



    rwco = (BlkRwCo) {

        .VAR_0    = VAR_0,

        .VAR_1 = VAR_1,

        .qiov   = &qiov,

        .VAR_5  = VAR_5,

        .ret    = NOT_DONE,

    };



    co = qemu_coroutine_create(VAR_4);

    qemu_coroutine_enter(co, &rwco);



    aio_context = blk_get_aio_context(VAR_0);

    while (rwco.ret == NOT_DONE) {

        aio_poll(aio_context, true);

    }



    return rwco.ret;

}

static int FUNC_0(BlockBackend *VAR_0, int64_t VAR_1, uint8_t *VAR_2,
int64_t VAR_3, CoroutineEntry VAR_4,
BdrvRequestFlags VAR_5)
{ AioContext *aio_context; QEMUIOVector qiov; struct iovec VAR_6; Coroutine *co; BlkRwCo rwco; VAR_6 = (struct iovec) { .iov_base = VAR_2,
.iov_len = VAR_3,
}; qemu_iovec_init_external(&qiov, &VAR_6, 1); rwco = (BlkRwCo) { .VAR_0    = VAR_0,
.VAR_1 = VAR_1,
.qiov   = &qiov,
.VAR_5  = VAR_5,
.ret    = NOT_DONE,
}; co = qemu_coroutine_create(VAR_4); qemu_coroutine_enter(co, &rwco); aio_context = blk_get_aio_context(VAR_0); while (rwco.ret == NOT_DONE) { aio_poll(aio_context, true); } return rwco.ret; }