ide: Factor ide_flush_cache out

The next patch reuses this code, so put it in its own function.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Kevin Wolf 2010-10-18 17:10:49 +02:00
parent a18953fbe7
commit 6bcb1a79a3

View file

@ -801,6 +801,15 @@ static void ide_flush_cb(void *opaque, int ret)
ide_set_irq(s->bus); ide_set_irq(s->bus);
} }
static void ide_flush_cache(IDEState *s)
{
if (s->bs) {
bdrv_aio_flush(s->bs, ide_flush_cb, s);
} else {
ide_flush_cb(s, 0);
}
}
static inline void cpu_to_ube16(uint8_t *buf, int val) static inline void cpu_to_ube16(uint8_t *buf, int val)
{ {
buf[0] = val >> 8; buf[0] = val >> 8;
@ -2031,10 +2040,7 @@ void ide_ioport_write(void *opaque, uint32_t addr, uint32_t val)
break; break;
case WIN_FLUSH_CACHE: case WIN_FLUSH_CACHE:
case WIN_FLUSH_CACHE_EXT: case WIN_FLUSH_CACHE_EXT:
if (s->bs) ide_flush_cache(s);
bdrv_aio_flush(s->bs, ide_flush_cb, s);
else
ide_flush_cb(s, 0);
break; break;
case WIN_STANDBY: case WIN_STANDBY:
case WIN_STANDBY2: case WIN_STANDBY2: