diff options
author | Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> | 2011-11-30 12:23:43 +0000 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2011-12-05 14:56:06 +0100 |
commit | 922453bca6a927bb527068ae8679d587cfa45dbc (patch) | |
tree | beb8fc3e9e180558f423e5b7ce97affed1ee8ca6 /hw/ide | |
parent | 5f8b6491f20732e0a31e64bbf75b62def579e044 (diff) |
block: convert qemu_aio_flush() calls to bdrv_drain_all()
Many places in QEMU call qemu_aio_flush() to complete all pending
asynchronous I/O. Most of these places actually want to drain all block
requests but there is no block layer API to do so.
This patch introduces the bdrv_drain_all() API to wait for requests
across all BlockDriverStates to complete. As a bonus we perform checks
after qemu_aio_wait() to ensure that requests really have finished.
Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'hw/ide')
-rw-r--r-- | hw/ide/macio.c | 5 | ||||
-rw-r--r-- | hw/ide/pci.c | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/hw/ide/macio.c b/hw/ide/macio.c index 70b33422d2..c09d2e0a35 100644 --- a/hw/ide/macio.c +++ b/hw/ide/macio.c @@ -200,8 +200,9 @@ static void pmac_ide_flush(DBDMA_io *io) { MACIOIDEState *m = io->opaque; - if (m->aiocb) - qemu_aio_flush(); + if (m->aiocb) { + bdrv_drain_all(); + } } /* PowerMac IDE memory IO */ diff --git a/hw/ide/pci.c b/hw/ide/pci.c index 49b823df79..5078c0b565 100644 --- a/hw/ide/pci.c +++ b/hw/ide/pci.c @@ -309,7 +309,7 @@ void bmdma_cmd_writeb(BMDMAState *bm, uint32_t val) * aio operation with preadv/pwritev. */ if (bm->bus->dma->aiocb) { - qemu_aio_flush(); + bdrv_drain_all(); assert(bm->bus->dma->aiocb == NULL); assert((bm->status & BM_STATUS_DMAING) == 0); } |