From 5928014eb7193d23b36acfbe7ec8f043708e5623 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig <chellwig@redhat.com> Date: Tue, 24 Nov 2009 19:43:07 -0200 Subject: [PATCH 03/11] ide: use bdrv_aio_flush RH-Author: Christoph Hellwig <chellwig@redhat.com> Message-id: <1256889852.9905.5.camel@brick.lst.de> Patchwork-id: 3650 O-Subject: [PATCH 4/5] ide: use bdrv_aio_flush Bugzilla: 537646 RH-Acked-by: Rik van Riel <riel@redhat.com> RH-Acked-by: Kevin Wolf <kwolf@redhat.com> RH-Acked-by: Juan Quintela <quintela@redhat.com> commit b0484ae464dcd8ee7439c4257b2f40d6b0e007dd Author: Christoph Hellwig <hch@lst.de> Date: Fri Sep 4 19:02:06 2009 +0200 ide: use bdrv_aio_flush Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- qemu/hw/ide.c | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-) diff --git a/qemu/hw/ide.c b/qemu/hw/ide.c index a4d78be..4f98428 100644 --- a/qemu/hw/ide.c +++ b/qemu/hw/ide.c @@ -1180,6 +1180,16 @@ static void ide_atapi_cmd_check_status(IDEState *s) ide_set_irq(s); } +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); +} + static inline void cpu_to_ube16(uint8_t *buf, int val) { buf[0] = val >> 8; @@ -2378,9 +2388,9 @@ static 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); + bdrv_aio_flush(s->bs, ide_flush_cb, s); + else + ide_flush_cb(s, 0); break; case WIN_STANDBY: case WIN_STANDBY2: -- 1.6.3.rc4.29.g8146