From b0484ae464dcd8ee7439c4257b2f40d6b0e007dd Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Fri, 4 Sep 2009 19:02:06 +0200 Subject: ide: use bdrv_aio_flush Signed-off-by: Christoph Hellwig Signed-off-by: Anthony Liguori --- hw/ide/core.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/hw/ide/core.c b/hw/ide/core.c index 6fd6dc2..87d5cdf 100644 --- a/hw/ide/core.c +++ b/hw/ide/core.c @@ -771,6 +771,16 @@ static void ide_atapi_cmd_check_status(IDEState *s) ide_set_irq(s->bus); } +static void ide_flush_cb(void *opaque, int ret) +{ + IDEState *s = opaque; + + /* XXX: how do we signal I/O errors here? */ + + s->status = READY_STAT | SEEK_STAT; + ide_set_irq(s->bus); +} + static inline void cpu_to_ube16(uint8_t *buf, int val) { buf[0] = val >> 8; @@ -1969,9 +1979,9 @@ void ide_ioport_write(void *opaque, uint32_t addr, uint32_t val) case WIN_FLUSH_CACHE: case WIN_FLUSH_CACHE_EXT: if (s->bs) - bdrv_flush(s->bs); - s->status = READY_STAT | SEEK_STAT; - ide_set_irq(s->bus); + bdrv_aio_flush(s->bs, ide_flush_cb, s); + else + ide_flush_cb(s, 0); break; case WIN_STANDBY: case WIN_STANDBY2: -- cgit v1.1