Revision c87c0672 hw/ide.c

b/hw/ide.c
496 496
    IDEState *ide_if;
497 497
    BlockDriverCompletionFunc *dma_cb;
498 498
    BlockDriverAIOCB *aiocb;
499
    struct iovec iov;
500
    QEMUIOVector qiov;
499 501
    int64_t sector_num;
500 502
    uint32_t nsector;
501 503
} BMDMAState;
......
1467 1469
#ifdef DEBUG_AIO
1468 1470
    printf("aio_read_cd: lba=%u n=%d\n", s->lba, n);
1469 1471
#endif
1470
    bm->aiocb = bdrv_aio_read(s->bs, (int64_t)s->lba << 2,
1471
                              s->io_buffer + data_offset, n * 4,
1472
                              ide_atapi_cmd_read_dma_cb, bm);
1472
    bm->iov.iov_base = s->io_buffer + data_offset;
1473
    bm->iov.iov_len = n * 4 * 512;
1474
    qemu_iovec_init_external(&bm->qiov, &bm->iov, 1);
1475
    bm->aiocb = bdrv_aio_readv(s->bs, (int64_t)s->lba << 2, &bm->qiov,
1476
                               n * 4, ide_atapi_cmd_read_dma_cb, bm);
1473 1477
    if (!bm->aiocb) {
1474 1478
        /* Note: media not present is the most likely case */
1475 1479
        ide_atapi_cmd_error(s, SENSE_NOT_READY,

Also available in: Unified diff