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