static int nbd_co_readv_1(BlockDriverState *bs, int64_t sector_num,

                          int nb_sectors, QEMUIOVector *qiov,

                          int offset)

{

    BDRVNBDState *s = bs->opaque;

    struct nbd_request request;

    struct nbd_reply reply;



    request.type = NBD_CMD_READ;

    request.from = sector_num * 512;

    request.len = nb_sectors * 512;



    nbd_coroutine_start(s, &request);

    if (nbd_co_send_request(s, &request, NULL, 0) == -1) {

        reply.error = errno;

    } else {

        nbd_co_receive_reply(s, &request, &reply, qiov->iov, offset);

    }

    nbd_coroutine_end(s, &request);

    return -reply.error;



}

static int nbd_co_readv_1(BlockDriverState *bs, int64_t sector_num,

                          int nb_sectors, QEMUIOVector *qiov,

                          int offset)

{

    BDRVNBDState *s = bs->opaque;

    struct nbd_request request;

    struct nbd_reply reply;



    request.type = NBD_CMD_READ;

    request.from = sector_num * 512;

    request.len = nb_sectors * 512;



    nbd_coroutine_start(s, &request);

    if (nbd_co_send_request(s, &request, NULL, 0) == -1) {

        reply.error = errno;

    } else {

        nbd_co_receive_reply(s, &request, &reply, qiov->iov, offset);

    }

    nbd_coroutine_end(s, &request);

    return -reply.error;



}

static int FUNC_0(BlockDriverState *VAR_0, int64_t VAR_1,

                          int VAR_2, QEMUIOVector *VAR_3,

                          int VAR_4)

{

    BDRVNBDState *s = VAR_0->opaque;

    struct nbd_request VAR_5;

    struct nbd_reply VAR_6;



    VAR_5.type = NBD_CMD_READ;

    VAR_5.from = VAR_1 * 512;

    VAR_5.len = VAR_2 * 512;



    nbd_coroutine_start(s, &VAR_5);

    if (nbd_co_send_request(s, &VAR_5, NULL, 0) == -1) {

        VAR_6.error = errno;

    } else {

        nbd_co_receive_reply(s, &VAR_5, &VAR_6, VAR_3->iov, VAR_4);

    }

    nbd_coroutine_end(s, &VAR_5);

    return -VAR_6.error;



}

static int FUNC_0(BlockDriverState *VAR_0, int64_t VAR_1,
int VAR_2, QEMUIOVector *VAR_3,
int VAR_4)
{ BDRVNBDState *s = VAR_0->opaque; struct nbd_request VAR_5; struct nbd_reply VAR_6; VAR_5.type = NBD_CMD_READ; VAR_5.from = VAR_1 * 512; VAR_5.len = VAR_2 * 512; nbd_coroutine_start(s, &VAR_5); if (nbd_co_send_request(s, &VAR_5, NULL, 0) == -1) { VAR_6.error = errno; } else { nbd_co_receive_reply(s, &VAR_5, &VAR_6, VAR_3->iov, VAR_4); } nbd_coroutine_end(s, &VAR_5); return -VAR_6.error; }